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实现分区多任务并行

posted @ 2019-10-10 18:57  vvf  阅读(176)  评论(0编辑  收藏  举报