У меня 8 логических процессоров.При выполнении следующего кода
public void test()
{
Parallel.For( 1, 1001, i => { IntensiveWork(i); });
}
private static void IntensiveWork(int i)
{
Random r=new Random();
Thread.Sleep(r.Next(i*1));
}
я замечаю, что Parallel.For выполняет несколько пакетов по 8 заданий.Каждая партия будет выполняться последовательно.Проблема заключается в том, что если 7/8 заданий в пакете завершено, то следующий пакет будет ожидать завершения последнего задания.Это означает, что 7 ядер не будут заняты.Есть ли лучший способ реализовать параллелизм - это C #, в котором, как только задание в пакете завершается, оно назначит этому ядру другое задание.