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
,让更多人免费使用。)
我正在使用 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
,让更多人免费使用。)