使用Parallel.ForEach()进行长时间运行的进程

时间:2014-06-24 11:27:38

标签: c# task-parallel-library parallel.foreach

我的实施方法如下:

  Parallel.ForEach(dtJobs.AsEnumerable(),new ParallelOptions{MaxDegreeofParalellism=5},dataRow=>

  {

       some long running process
});

属性 MaxDegreeofParalellism = 5 只会创建5个帖子?

我是对的吗?如果没有,请纠正我..

1 个答案:

答案 0 :(得分:2)

来自ParallelOptions.MaxDegreeOfParallelism

  

MaxDegreeOfParallelism属性会影响通过此ParallelOptions实例传递的并行方法调用所运行的并发操作数。正属性值将并发操作的数量限制为设置值。如果为-1,则对并发运行的操作数没有限制。

     

默认情况下,For和ForEach将使用底层调度程序提供的许多线程,因此从默认值更改MaxDegreeOfParallelism只会限制将使用多少并发任务。

所以是的,它将 max out 设置为5.它不能保证达到5,这取决于底层调度程序提供的线程数。