对于长时间运行的进程使用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个线程?
我说的对吗?
From ParallelOptions.MaxDegreeOfParallelism
:
MaxDegreeOfParallelism属性影响通过ParallelOptions实例传递的Parallel方法调用运行的并发操作的数量。一个正的属性值将并发操作的数量限制在设定值。如果为-1,则不限制并发操作的数目。
默认情况下,For和ForEach将使用底层调度器提供的多少线程,因此将MaxDegreeOfParallelism从默认值更改仅限制将使用多少并发任务。
是的,它将在5处最大化。它不能保证达到5,这取决于底层调度器提供了多少线程。