我使用Parallel.Foreach来处理多个并发任务。我通过指定MaxDegreeOfParalellism限制了并发操作的数量。所以现在,如果我在该foreach之外开始另一项任务,那么将对该任务应用最大并发操作限制。
Parallel.ForEach(tasks, new ParallelOptions { MaxDegreeOfParallelism = MaxInstances }, task=>
{////Some OPeration///}
Task.Factory.StartNew(action)
如果最大限制为8并且Foreach中已经有8个并发任务正在运行。那么foreach之外的任务是否会运行?
答案 0 :(得分:1)
不,您应用于Parallel.ForEach()
的选项仅影响Parallel.ForEach()
,它们不会直接影响任何其他代码。
(实际上,您对Parallel.ForEach()
的限制越多,其他Task
立即执行的可能性就越大。这是因为您的Parallel.ForEach()
将使用ThreadPool
中较少的线程{1}},让其他人免费获得。)