Как запретить создание новых потоков, пока не отработает хотя бы половина от ранее запущенных? - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую Всех. Подскажите, пжта., организовываю потоки., в цикле for непосредственно число потоков., в цикле while количество элементов в коллекции. Сейчас при работе получается, что основной поток в цикле for произвёл итерацию согласно количеству потоков, далее выходит из цикла смотрит что коллекция ещё позволяет работать далее, снова входит в for и продолжает всё по новому и всё это происходит до тех пор, пока коллекция даёт добро и в результате у меня хренова туча потоков создаётся. Как можно решить данный момент, чтоб основной поток не создовал вторичные потоки, пока не отработают хоть половина от ранее запущенных?
Листинг программы
  1. void Poekhali()
  2. {
  3. while (index < colection.Count)
  4. {
  5. for (int i = 0; i < chisloPotokov; i++)
  6. {
  7. if (index == colection.Count) break;
  8. Thread potok = new Thread(Method);
  9. potok.Start(colection.ElementAt(index++));
  10. Thread.Sleep(200);
  11. }
  12. }
  13. }

Решение задачи: «Как запретить создание новых потоков, пока не отработает хотя бы половина от ранее запущенных?»

textual
Листинг программы
  1. IEnumerable<object> collection = null; // тут типа список исходных элементов, не null, конечно
  2. Parallel.ForEach(collection, x => x.ToString()); // а тут над каждым выполняется действие

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы