Parallel.Foreach MaxDegreeOfParallelism的范围

时间:2016-02-25 08:59:55

标签: c# task-parallel-library

我使用Parallel.Foreach来处理多个并发任务。我通过指定MaxDegreeOfParalellism限制了并发操作的数量。所以现在,如果我在该foreach之外开始另一项任务,那么将对该任务应用最大并发操作限制。

Parallel.ForEach(tasks, new ParallelOptions { MaxDegreeOfParallelism = MaxInstances }, task=>
                    {////Some OPeration///}


Task.Factory.StartNew(action)

如果最大限制为8并且Foreach中已经有8个并发任务正在运行。那么foreach之外的任务是否会运行?

1 个答案:

答案 0 :(得分:1)

不,您应用于Parallel.ForEach()的选项仅影响Parallel.ForEach(),它们不会直接影响任何其他代码。

(实际上,您对Parallel.ForEach()的限制越多,其他Task立即执行的可能性就越大。这是因为您的Parallel.ForEach()将使用ThreadPool中较少的线程{1}},让其他人免费获得。)