我正在尝试确定AsParallel()如何拆分它的“源”,以及实际上“源”的含义是什么...

例如...

public class CSVItem
{
    public DateTime Date { get; set; }
    public string AccountNumber { get; set; }
}

List<CSVItem> CSVItemList = new List<CSVItem>();

然后将500k个不同的CSVItem放入CSVItemList中。

然后使用:
CSVItemList = CSVItemList.AsParallel().OrderBy(x => x.AccountNumber).ThenBy(q => q.Date).ToList();

它将仅将``源''(例如将250k条记录分到两个线程中的每个线程)拆分为多个异步线程并执行OrderBy()。ThenBy()在每个线程上然后合并结果...

还是将OrderBy()和ThenBy()分离到单独的线程上并运行它们,然后合并结果...给出一个奇怪的排序列表?

最佳答案

它一个接一个地走
a)完成OrderBy合并结果,然后执行gose
b)ThenBy。下面的图像形式 Albahari博客展示了它的工作原理,即一步一步地

问:多少个任务

答:,您可以通过使用WithDegreeOfParallelism来决定这一点,强制PLINQ同时运行指定数量的任务

   //create 5 task
   List.AsParallel().WithDegreeOfParallelism(5)

检查此:Parallel Programming

10-06 01:55