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、このParallelOptionsインスタンスに渡されるメソッド呼び出しによってParallel実行される同時実行操作の数に影響します。 プロパティに正の値を設定すると、同時実行操作の数が設定された値に制限されます。 -1 の場合、同時に実行される操作の数に制限はありません (メソッドを ForEachAsync 除き、-1 は を意味 ProcessorCountします)。

既定では、 ForForEach では、基になるスケジューラによって提供されるスレッドがいくつでも利用されるため、既定から変更 MaxDegreeOfParallelism すると、使用される同時実行タスクの数のみが制限されます。

一般に、この設定を変更する必要はありません。 ただし、次のような高度な使用シナリオで明示的に設定することもできます。

  • 使用している特定のアルゴリズムが特定の数のコアを超えてスケーリングされないことがわかっている場合。 プロパティを設定して、追加のコアのサイクルを無駄にしないようにすることができます。

  • 複数のアルゴリズムを同時に実行していて、各アルゴリズムが利用できるシステムの量を手動で定義する場合。 それぞれに値を MaxDegreeOfParallelism 設定できます。

  • スレッド プールのヒューリスティックが使用するスレッドの適切な数を特定できず、挿入するスレッドが多すぎる可能性がある場合。 たとえば、実行時間の長いループ本体の繰り返しでは、スレッド プールが適切な進行状況またはライブロックまたはデッドロックの違いを判断できず、パフォーマンスを向上させるために追加されたスレッドを再利用できない場合があります。 この場合は、 プロパティを設定して、適切な数のスレッドを使用しないようにすることができます。

適用対象