PLinq
IEnumerale<>.AsParallel()
转换为PLinq
var list = Enumerable.Range(0, 100); var query = from item in list.AsParallel() select new { b = System.Threading.Thread.CurrentThread.ManagedThreadId, a = item }; foreach (var item in query) { Console.WriteLine(item); } Console.ReadKey();
转换为并行代码后,输出不是顺序输出(多次执行不是都是0-99顺序输出),而且ThreadId也不都相同。
AsSequential()
串行输出(转换为Linq)
AsOrdered()
将并行结果按照原来的样子输出(0-99顺序输出)
AsUnordered()
不安原来的样子排序
WithDegreeOfParallelism()
并行程度控制
WithCancellation()
取消
WithExecutionMode()
执行模式(Default根据系统评估决定是否分区多任务并行,某些简单操作可能不需要多任务;ForceParallelism强制并行)
WithMergeOptions
PLinq底层基于Task实现分区多任务并行