ParallelOptions.MaxDegreeOfParallelism Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.