Freigeben über


ParallelOptions.MaxDegreeOfParallelism Eigenschaft

Definition

Ruft die maximale Anzahl gleichzeitiger Aufgaben ab, die von dieser ParallelOptions Instanz aktiviert sind, oder legt diese fest.

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

Eigenschaftswert

Eine ganze Zahl, die den maximalen Grad der Parallelität darstellt.

Ausnahmen

Die Eigenschaft wird auf Null oder auf einen Wert festgelegt, der kleiner als -1 ist.

Hinweise

Die MaxDegreeOfParallelism Eigenschaft wirkt sich auf die Anzahl gleichzeitiger Vorgänge aus, die von Parallel Methodenaufrufen ausgeführt werden, die diese ParallelOptions Instanz übergeben werden. Ein positiver Eigenschaftswert beschränkt die Anzahl der gleichzeitigen Vorgänge auf den festgelegten Wert. Wenn es -1 ist, gibt es keine Beschränkung für die Anzahl gleichzeitig ausgeführter Vorgänge (mit Ausnahme der ForEachAsync Methode, wobei -1 bedeutet ProcessorCount).

Standardmäßig werden jedoch ForEach viele Threads verwendet, For die der zugrunde liegende Scheduler bereitstellt, sodass das Ändern MaxDegreeOfParallelism von den Standardeinstellungen nur begrenzt, wie viele gleichzeitige Vorgänge verwendet werden.

Im Allgemeinen müssen Sie diese Einstellung nicht ändern. Sie können es jedoch explizit in erweiterten Nutzungsszenarien wie den folgenden festlegen:

  • Wenn Sie wissen, dass ein bestimmter Algorithmus, den Sie verwenden, nicht über eine bestimmte Anzahl von Kernen hinaus skaliert wird. Sie können die Eigenschaft festlegen, um Zyklen für zusätzliche Kerne zu vermeiden.

  • Wenn Sie mehrere Algorithmen gleichzeitig ausführen und manuell definieren möchten, wie viel des Systems jeder Algorithmus nutzen kann. Sie können jeweils einen MaxDegreeOfParallelism Wert festlegen.

  • Wenn die Heuristik des Threadpools die richtige Anzahl der zu verwendenden Threads nicht ermitteln kann und zu viele Threads injiziert werden kann. Beispielsweise kann der Threadpool in langen Schleifentext-Iterationen den Unterschied zwischen vernünftigem Fortschritt, Livelock oder Deadlock nicht erkennen und möglicherweise keine Threads zurückfordern, die zur Verbesserung der Leistung hinzugefügt wurden. In diesem Fall können Sie die Eigenschaft festlegen, um sicherzustellen, dass Sie nicht mehr als eine angemessene Anzahl von Threads verwenden.

Gilt für: