TPL - MaxDegreeOfParallelism和MaximumConcurrencyLevel之间的区别

SFu*_*n28 6 .net-4.0 task-parallel-library

ParallelOptions.MaxDegreeOfParallelism和之间有什么区别ParallelOptions.TaskScheduler.MaximumConcurrencyLevel?你什么时候使用?

SFu*_*n28 8

使用反射器,我收集到两者都用于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;
    }
}
Run Code Online (Sandbox Code Playgroud)