在使用Parallel.ForEach时,我们可以选择定义Parallel选项并设置最大并行度,例如:

Parallel.ForEach(values, new ParallelOptions {MaxDegreeOfParallelism = number}, value = > {
    // Do Work
})

但是在执行PLINQ时,例如:
Tabel.AsEnumberable()
     .AsParallel()
     .Where(//Logic)

我找不到设置MaxDegreeOfParallelism的方法。我也上网查找,但没有找到任何东西。有人找到解决方法吗?任何帮助表示赞赏。

最佳答案

您可以使用 ParallelEnumerable.WithDegreeOfParallelism :


var result = Tabel.AsEnumberable()
                  .AsParallel()
                  .WithDegreeOfParallelism(number)
                  .Where(/* predicate */);

编辑:

@svick在ParallelOptions.MaxDegreeOfParallelism vs PLINQ’s WithDegreeOfParallelism上提供了出色的内容,强调了两者之间的区别:

关于c# - AsParallel()的最大并行度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25290389/

10-12 15:36