ParallelOptions.MaxDegreeOfParallelism ParallelOptions.MaxDegreeOfParallelism ParallelOptions.MaxDegreeOfParallelism ParallelOptions.MaxDegreeOfParallelism Property


この ParallelOptions インスタンスによって実現される同時実行タスクの最大数を取得または設定します。Gets or sets the maximum number of concurrent tasks enabled by this ParallelOptions instance.

 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


並列化の最大レベルを表す整数。An integer that represents the maximum degree of parallelism.


プロパティが 0 に設定されているか、-1 より小さい値に設定されています。The property is being set to zero or to a value that is less than -1.


MaxDegreeOfParallelismプロパティによって実行同時操作数に影響するParallelこれに渡されるメソッド呼び出しParallelOptionsインスタンス。The MaxDegreeOfParallelism property affects the number of concurrent operations run by Parallel method calls that are passed this ParallelOptions instance. 正の値のプロパティの値は、値の設定を同時操作の数を制限します。A positive property value limits the number of concurrent operations to the set value. -1 の場合、同時に実行される操作の数に制限はありません。If it is -1, there is no limit on the number of concurrently running operations.

既定では、ForForEachでを利用する多数のスレッド、基になるスケジューラを提供するための変更がMaxDegreeOfParallelismのみの既定の制限数の同時実行タスクが使用されます。By default, For and ForEach will utilize however many threads the underlying scheduler provides, so changing MaxDegreeOfParallelism from the default only limits how many concurrent tasks will be used.

一般に、この設定を変更する必要はありません。Generally, you do not need to modify this setting. ただし、こうした高度な使用シナリオで明示的に設定することができます。However, you may choose to set it explicitly in advanced usage scenarios such as these:

  • わかっている場合に使用している特定のアルゴリズムは、コア数を超えるスケーリングされません。When you know that a particular algorithm you're using won't scale beyond a certain number of cores. 追加のコアのサイクルを節約するためにプロパティを設定することができます。You can set the property to avoid wasting cycles on additional cores.

  • 同時に複数のアルゴリズムを実行しているし、手動で定義する各アルゴリズムが利用できるシステムの量。When you're running multiple algorithms concurrently and want to manually define how much of the system each algorithm can utilize. 設定することができます、MaxDegreeOfParallelismそれぞれの値。You can set a MaxDegreeOfParallelism value for each.

  • ときに、スレッド プールのヒューリスティックが使用するスレッドの適切な数を決定できないと、スレッドが多すぎるを挿入することになります。When the thread pool's heuristics is unable to determine the right number of threads to use and could end up injecting too many threads. たとえば、実行時間の長いループ本体のイテレーションでスレッド プールが妥当な進行状況、ライブロック、またはデッドロックの違いを見分けることができない可能性があり、パフォーマンスを向上させるために追加されたスレッドを再利用できない可能性があります。For example, in long-running loop body iterations, the thread pool might not be able to tell the difference between reasonable progress or livelock or deadlock, and might not be able to reclaim threads that were added to improve performance. この場合、スレッドの適切な数よりも多く使用しないことを確認するプロパティを設定できます。In this case, you can set the property to ensure that you don't use more than a reasonable number of threads.