ParallelOptions.MaxDegreeOfParallelism Proprietà

Definizione

Ottiene o imposta il massimo numero di attività simultanee abilitate da questa istanza di 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

Valore della proprietà

Intero che rappresenta il massimo grado di parallelismo.

Eccezioni

La proprietà viene impostata su zero o su un valore minore di -1.

Commenti

La proprietà MaxDegreeOfParallelism influisce sul numero di operazioni simultanee eseguite dalle chiamate al metodo Parallel passate a questa istanza di ParallelOptions. Un valore di proprietà positivo limita il numero di operazioni simultanee al valore impostato. Se è -1, non è previsto alcun limite per il numero di operazioni in esecuzione simultanea (ad eccezione del ForEachAsync metodo, dove -1 indica ProcessorCount).

Per impostazione predefinita, For e ForEach utilizzerà il numero di thread forniti dall'utilità di pianificazione sottostante, pertanto la modifica MaxDegreeOfParallelism rispetto all'impostazione predefinita limita solo il numero di attività simultanee usate.

In genere, non è necessario modificare questa impostazione. È tuttavia possibile impostarla in modo esplicito negli scenari di utilizzo avanzati come i seguenti:

  • Quando si sa che un algoritmo specifico che si sta utilizzando non verrà ridimensionato oltre un determinato numero di core. È possibile impostare la proprietà per evitare di sprecare cicli su core aggiuntivi.

  • Quando si eseguono più algoritmi contemporaneamente e si desidera definire manualmente quanta parte del sistema può utilizzare ogni algoritmo. È possibile impostare un MaxDegreeOfParallelism valore per ognuno di essi.

  • Quando le regole euristiche del pool di thread non sono in grado di determinare il numero corretto di thread da utilizzare e potrebbero finire con l'inserire troppi thread. Ad esempio, nelle iterazioni di lunga durata del corpo del ciclo, il pool di thread potrebbe non essere in grado di indicare la differenza tra uno stato di avanzamento ragionevole e livelock o deadlock e potrebbe non essere in grado di recuperare i thread aggiunti per migliorare le prestazioni. In questo caso, è possibile impostare la proprietà per assicurarsi di non usare più di un numero ragionevole di thread.

Si applica a