ParallelOptions.MaxDegreeOfParallelism 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置此 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) 。
默认情况下, For 和 ForEach 将利用基础计划程序提供的线程数,因此从默认值更改 MaxDegreeOfParallelism 仅限制将使用多少个并发任务。
通常,不需要修改此设置。 但是,可以选择在高级使用方案中显式设置它,例如:
当你知道你使用的特定算法不会扩展到超过特定核心数时。 可以设置 属性以避免浪费其他内核上的周期数。
如果同时运行多个算法,并且想要手动定义每个算法可以利用的系统数量。 可以为每个设置一个 MaxDegreeOfParallelism 值。
当线程池的启发式方法无法确定要使用的正确线程数,并且最终可能注入过多线程时。 例如,在长时间运行的循环主体迭代中,线程池可能无法区分合理进度、livelock 或死锁,并且可能无法回收为提高性能而添加的线程。 在这种情况下,可以设置 属性,以确保使用的线程数不超过合理数目。