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