Parallel.Foreach MaxDegreeOfParallelism 的范围

Scope of Parallel.Foreach MaxDegreeOfParallelism

我正在使用 Parallel.Foreach 处理多个并发 tasks.I 通过指定 MaxDegreeOfParalellism 限制了并发操作的数量。所以现在如果我在那个 foreach 之外开始另一个任务,最大并发操作限制是否会应用于该任务。

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


Task.Factory.StartNew(action)

如果最大限制是 8 并且 8 个并发任务已经 运行ning 在 Foreach.Would 任务之外的 foreach 运行?

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

(实际上,你限制的越多Parallel.ForEach(),另一个Task立即执行的可能性就越大。这是因为你的Parallel.ForEach()使用的线程较少ThreadPool,让更多人免费使用。)