ParallelOptions.MaxDegreeOfParallelism Propriété

Définition

Obtient ou définit le nombre maximal de tâches simultanées activées par cette instance 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

Valeur de propriété

Entier qui représente le degré maximal de parallélisme.

Exceptions

Une valeur égale à 0 ou inférieure à -1 est assignée à la propriété.

Remarques

La MaxDegreeOfParallelism propriété affecte le nombre d’opérations simultanées exécutées par Parallel les appels de méthode qui sont passés à cette ParallelOptions instance. Une valeur de propriété positive limite le nombre d’opérations simultanées à la valeur définie. S’il a la valeur -1, le nombre d’opérations en cours d’exécution simultanée n’est pas limité (à l’exception de la ForEachAsync méthode, où -1 signifie ProcessorCount).

Par défaut, For et ForEach utilisent le nombre de threads que fournit le planificateur sous-jacent, donc la modification MaxDegreeOfParallelism de la valeur par défaut limite le nombre de tâches simultanées qui seront utilisées.

En règle générale, vous n’avez pas besoin de modifier ce paramètre. Toutefois, vous pouvez choisir de le définir explicitement dans des scénarios d’utilisation avancés tels que ceux-ci :

  • Quand vous savez qu’un algorithme particulier que vous utilisez ne sera pas mis à l’échelle au-delà d’un certain nombre de cœurs. Vous pouvez définir la propriété pour éviter de gaspiller des cycles sur des cœurs supplémentaires.

  • Lorsque vous exécutez plusieurs algorithmes simultanément et que vous souhaitez définir manuellement la quantité du système que chaque algorithme peut utiliser. Vous pouvez définir une MaxDegreeOfParallelism valeur pour chaque.

  • Lorsque l’heuristique du pool de threads n’est pas en mesure de déterminer le nombre approprié de threads à utiliser et peut finir par injecter trop de threads. Par exemple, dans les itérations de corps de boucle de longue durée, le pool de threads peut ne pas être en mesure de faire la différence entre une progression raisonnable, un blocage ou un interblocage, et peut ne pas être en mesure de récupérer des threads qui ont été ajoutés pour améliorer les performances. Dans ce cas, vous pouvez définir la propriété pour vous assurer que vous n’utilisez pas plus qu’un nombre raisonnable de threads.

S’applique à