У меня есть миллион элементов в Списке для обработки.
Если грубо сбросить их в Parallel.ForEach , это просто приведет к насыщению ЦП.
Вместо этого я делю главные списки элементов на части иперетащите подсписки в параллельный цикл.
List<Element> MasterList = new List<Element>();
Populate(MasterList); // puts a Million elements into list;
//Split Master List into 100 Lists of 10.0000 elements each
List<List<Element>> ListOfSubLists = Split(MasterList,100);
foreach (List<Element> EL in ListOfSubLists )
{
Parallel.ForEach(EL, E =>
{
// Do Stuff
}
//wait for all parallel iterations to end before continuing
}
Каков наилучший способ ожидания завершения всех параллельных итераций перед продолжением следующей итерации верхнего цикла?
Редактировать:
, как говорилось в некоторых ответах, «насыщать процессор» не является точным выражением.
На самом деле я просто хочу ограничить использование процессора и избежать чрезмерной нагрузки на него из-за этой обработки.