Compartilhar via


ParallelOptions.MaxDegreeOfParallelism Propriedade

Definição

Obtém ou define o número máximo de tarefas simultâneas habilitadas por esta instância 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

Valor da propriedade

Int32

Um inteiro que representa o grau máximo de paralelismo.

Exceções

A propriedade está sendo definida como zero ou com um valor menor que -1.

Comentários

A MaxDegreeOfParallelism propriedade afeta o número de operações simultâneas executadas por Parallel chamadas de método que são passadas nesta ParallelOptions instância. Um valor de propriedade positivo limita o número de operações simultâneas para o valor do conjunto. Se for -1, não haverá limite no número de operações em execução simultâneas (com exceção do ForEachAsync método, em que -1 significa ProcessorCount).

Por padrão, For e ForEach utilizará quantos threads o agendador subjacente fornecer, portanto, a alteração MaxDegreeOfParallelism do padrão limita apenas quantas tarefas simultâneas serão usadas.

Geralmente, você não precisa modificar essa configuração. No entanto, você pode optar por defini-lo explicitamente em cenários avançados de uso, como estes:

  • Quando você souber que um algoritmo específico que você está usando não será dimensionado além de um determinado número de núcleos. Você pode definir a propriedade para evitar ciclos de perda em núcleos adicionais.

  • Quando você estiver executando vários algoritmos simultaneamente e quiser definir manualmente quanto do sistema cada algoritmo pode utilizar. Você pode definir um valor para cada um MaxDegreeOfParallelism .

  • Quando a heurística do pool de threads não consegue determinar o número certo de threads a serem usados e pode acabar injetando muitos threads. Por exemplo, em iterações de corpo de loop de execução longa, o pool de threads pode não ser capaz de dizer a diferença entre progresso razoável ou livelock ou deadlock, e pode não ser capaz de recuperar threads que foram adicionados para melhorar o desempenho. Nesse caso, você pode definir a propriedade para garantir que você não use mais do que um número razoável de threads.

Aplica-se a