参考:https://docs.microsoft.com/zh-cn/dotnet/standard/parallel-programming/introduction-to-plinq
var source = Enumerable.Range(1, 10000); // Opt in to PLINQ with AsParallel. //执行模式 WithExecutionMode 如果你通过测试和测量知道特定查询以并行方式执行得更快时,可以强制指定并行查询。 //并行度 WithDegreeOfParallelism 默认情况下,PLINQ 使用主机计算机上的所有处理器。 var evenNums = from num in source.AsParallel() .WithExecutionMode(ParallelExecutionMode.ForceParallelism) .WithDegreeOfParallelism(2) where num % 2 == 0 select num; Console.WriteLine("{0} even numbers out of {1} total", evenNums.Count(), source.Count());
evenNums.ForAll(x=> Console.WriteLine(x));//并行结果,不合并,直接循环输出各个结果
evenNums.ToList().ForEach(x => Console.WriteLine(x));//将并行得到的结果合并成一个,然后循环输出
执行模式:默认情况下,PLINQ 是保守的。 在运行时,PLINQ 基础结构将分析查询的总体结构。 如果通过并行可能会提高查询速度,PLINQ 则将源序列分区为可以同时运行的任务。 如果并行化查询不安全,PLINQ 则只会按顺序运行查询。 如果 PLINQ 可以在可能会较昂贵的并行算法或成本较低的顺序算法之间进行选择,它会默认选择顺序算法。