并行LINQ的高级应用与优化
1. 指定合并选项
并行LINQ执行查询时,会将源数据分区并分配给不同线程。若结果由单线程(如foreach循环)消费,则各分区结果需合并为一个结果集。合并方式取决于查询中使用的运算符。对于产生有序结果的运算符,所有线程的结果会先完全缓冲,再合并,这可能使消费线程等待一段时间才能看到最终结果。若不关心顺序或想使用不同缓冲方案改善结果,可使用WithMergeOptions扩展方法向PLINQ提示结果的缓冲方式。
操作步骤:
1. 使用C#控制台应用程序项目模板创建新项目,将解决方案名称设为MergeOptions。
2. 在Program类顶部添加以下using指令:
using System; using System.Linq; using System.Threading;- 在
Program类的Main方法中创建源数字范围:
var numbers = ParallelEnumerable.Range(0, 1000);- 创建PLINQ查询,选择范围内能被5整除的数字,并使用