【发布时间】:2016-02-25 08:59:55
【问题描述】:
我正在使用 Parallel.Foreach 来处理多个并发任务。我通过指定 MaxDegreeOfParalellism 来限制并发操作的数量。因此,现在如果我在该 foreach 之外启动另一个任务,那么最大并发操作限制将应用于该任务。
Parallel.ForEach(tasks, new ParallelOptions { MaxDegreeOfParallelism = MaxInstances }, task=>
{////Some OPeration///}
Task.Factory.StartNew(action)
如果最大限制为 8 并且 Foreach 中已经在运行 8 个并发任务。是否会在 foreach 之外运行任务?
【问题讨论】:
-
在给定的示例中,任务将运行,因为在它启动时,并行 foreach 已完成并且其所有任务都已完成。
-
我的意思是说,如果一个单独的线程在执行 foreach 时尝试在 foreach 之外执行任务。