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

本文关键字:Parallel ForEach 进程 长时间 运行 | 更新日期: 2023-09-27 18:10:14

我有一个实现如下:

  Parallel.ForEach(dtJobs.AsEnumerable(),new ParallelOptions{MaxDegreeofParalellism=5},dataRow=>
  {
       some long running process
});

属性 maxdegreeofparallelism =5将只创建5个线程?

我说的对吗?

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

From ParallelOptions.MaxDegreeOfParallelism:

MaxDegreeOfParallelism属性影响通过ParallelOptions实例传递的Parallel方法调用运行的并发操作的数量。一个正的属性值将并发操作的数量限制在设定值。如果为-1,则不限制并发操作的数目。

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

是的,它将在5处最大化。它不能保证达到5,这取决于底层调度器提供了多少线程。