我有 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#,其中一旦批处理中的作业完成,它将为该核心分配另一个作业。