C# 将Parallel.ForEach()用于长时间运行的进程

C# 将Parallel.ForEach()用于长时间运行的进程,c#,task-parallel-library,parallel.foreach,C#,Task Parallel Library,Parallel.foreach,我有一个如下实现: Parallel.ForEach(dtJobs.AsEnumerable(),new ParallelOptions{MaxDegreeofParalellism=5},dataRow=> { some long running process }); 属性MaxDegreeOfParalElism=5将仅创建5个线程 我说得对吗?如果没有,请纠正我。来自: MaxDegreeOfParallelism属性影响传递给此ParallelOpti

我有一个如下实现:

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

  {

       some long running process
});
属性MaxDegreeOfParalElism=5将仅创建5个线程

我说得对吗?如果没有,请纠正我。

来自:

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

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


因此,是的,它将最大输出为5。它不能保证达到5个线程,这取决于底层调度程序提供的线程数量。

它最多将创建5个线程。请参阅感谢澄清我们可以将其用于长时间运行的流程吗?并行完成
大约需要10分钟。ForEach
?您应该考虑到它在幕后使用
ThreadPool
,并且您并不真的想用长时间运行的操作来耗尽线程池。我建议你看看我对你上一个问题的回答: