Scope of Parallel.Foreach MaxDegreeOfParallelism
本文关键字:MaxDegreeOfParallelism Foreach Parallel of Scope | 更新日期: 2023-09-27 18:36:05
我正在使用Parallel.Foreach来处理多个并发任务。我通过指定MaxDegreeOfParalellism来限制并发操作的数量。所以现在如果我在该任务之外启动另一个任务,是否会对该任务应用最大并发操作限制。
Parallel.ForEach(tasks, new ParallelOptions { MaxDegreeOfParallelism = MaxInstances }, task=>
{////Some OPeration///}
Task.Factory.StartNew(action)
如果最大限制为 8,并且 Foreach 中已在运行 8 个并发任务。foreach 之外的任务是否会运行?
不,应用于Parallel.ForEach()
的选项仅影响该Parallel.ForEach()
,它们不会直接影响任何其他代码。
(实际上,您限制Parallel.ForEach()
越多,其他Task
立即执行的可能性就越大。这是因为您的Parallel.ForEach()
将使用更少的线程来自ThreadPool
,将更多的线程留给其他人。