Как запретить создание новых потоков, пока не отработает хотя бы половина от ранее запущенных? - 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()); // а тут над каждым выполняется действие
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д