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