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

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

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

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

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

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

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


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

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

12   голосов , оценка 3.917 из 5
Похожие ответы