我正在尝试确定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