TPL-разница между MaxDegreeOfParallelism и MaximumConcurrencyLevel

в чем разница между ParallelOptions.MaxDegreeOfParallelism и ParallelOptions.TaskScheduler.MaximumConcurrencyLevel? Когда вы будете использовать либо?

1 ответов


используя рефлектор, я собрал, что оба используются в EffectiveMaxConcurrencyLevel свойства:

internal int EffectiveMaxConcurrencyLevel
{
    get
    {
        int maxDegreeOfParallelism = this.MaxDegreeOfParallelism;
        int maximumConcurrencyLevel = this.EffectiveTaskScheduler.MaximumConcurrencyLevel;
        if ((maximumConcurrencyLevel > 0) && (maximumConcurrencyLevel != 0x7fffffff))
        {
            maxDegreeOfParallelism = (maxDegreeOfParallelism == -1) ? maximumConcurrencyLevel : Math.Min(maximumConcurrencyLevel, maxDegreeOfParallelism);
        }
        return maxDegreeOfParallelism;
    }
}