ParallelOptions.MaxDegreeOfParallelism Eigenschaft

Definition

Ruft die maximale Anzahl paralleler Aufgaben ab, die durch diese ParallelOptions-Instanz aktiviert ist, 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 Parallelitätsgrad darstellt.

Ausnahmen

Die Eigenschaft wird auf 0 (null) oder einen Wert kleiner als -1 festgelegt.

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. 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 verwenden und ForEach unabhängig davon, For wie viele Threads der zugrunde liegende Scheduler bereitstellt, sodass der Wechsel MaxDegreeOfParallelism von der Standardeinstellung nur begrenzt, wie viele gleichzeitige Aufgaben verwendet werden.

Im Allgemeinen müssen Sie diese Einstellung nicht ändern. Sie können es jedoch explizit in erweiterten Verwendungsszenarien 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 auf zusätzlichen Kernen zu vermeiden.

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

  • Wenn die Heuristik des Threadpools nicht in der Lage ist, die richtige Anzahl von Zu verwendenden Threads zu ermitteln, und möglicherweise zu viele Threads injizieren. Beispielsweise kann der Threadpool bei Iterationen des Schleifentexts mit langer Ausführungszeit möglicherweise nicht den Unterschied zwischen angemessenem Fortschritt, Livelock oder Deadlock erkennen und möglicherweise keine Threads freigeben, die hinzugefügt wurden, um die Leistung zu verbessern. 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: