ParallelOptions.MaxDegreeOfParallelism 属性

定义

获取或设置此 ParallelOptions 实例所允许的并发任务的最大数目。

public:
 property int MaxDegreeOfParallelism { int get(); void set(int value); };
public int MaxDegreeOfParallelism { get; set; }
member this.MaxDegreeOfParallelism : int with get, set
Public Property MaxDegreeOfParallelism As Integer

属性值

一个表示最大并行度的整数。

例外

该属性被设置为 0 或小于 1- 的值。

注解

属性 MaxDegreeOfParallelism 影响通过 Parallel 传递此 ParallelOptions 实例的方法调用运行的并发操作数。 属性值为正会将并发操作数限制为所设置的值。 如果为 -1,则 (并发运行的操作数没有限制,但 方法除外 ForEachAsync ,其中 -1 表示 ProcessorCount) 。

默认情况下, ForForEach 将利用基础计划程序提供的线程数,因此从默认值更改 MaxDegreeOfParallelism 仅限制将使用多少个并发任务。

通常,不需要修改此设置。 但是,可以选择在高级使用方案中显式设置它,例如:

  • 当你知道你使用的特定算法不会扩展到超过特定核心数时。 可以设置 属性以避免浪费其他内核上的周期数。

  • 如果同时运行多个算法,并且想要手动定义每个算法可以利用的系统数量。 可以为每个设置一个 MaxDegreeOfParallelism 值。

  • 当线程池的启发式方法无法确定要使用的正确线程数,并且最终可能注入过多线程时。 例如,在长时间运行的循环主体迭代中,线程池可能无法区分合理进度、livelock 或死锁,并且可能无法回收为提高性能而添加的线程。 在这种情况下,可以设置 属性,以确保使用的线程数不超过合理数目。

适用于