Pau*_*hra 5 c# multithreading plinq
我试图确定AsParallel()如何分割它的'source',实际上'source'是什么意思......
例如...
public class CSVItem
{
public DateTime Date { get; set; }
public string AccountNumber { get; set; }
}
List<CSVItem> CSVItemList = new List<CSVItem>();
Run Code Online (Sandbox Code Playgroud)
然后将500k不同的CSVItem放入CSVItemList.
然后使用:
CSVItemList = CSVItemList.AsParallel().OrderBy(x => x.AccountNumber).ThenBy(q => q.Date).ToList();
Run Code Online (Sandbox Code Playgroud)
它是否只将'源'(意味着例如250k记录到两个线程中的每一个上)拆分到多个异步线程上并执行OrderBy().然后在每个线程上的ThenBy()合并结果...
或者它将OrderBy()和ThenBy()分离到不同的线程并运行它们然后合并结果...给出一个奇怪的有序列表?
它一一完成了 a) 的OrderBy
合并结果,然后一一完成了 b) ThenBy
。下图来自Albahari 博客,展示了它的工作原理,即它需要一一进行
问:任务数量是多少
答:您可以通过使用WithDegreeOfParallelism
强制 PLINQ 同时运行指定数量的任务来决定这一点
//create 5 task
List.AsParallel().WithDegreeOfParallelism(5)
Run Code Online (Sandbox Code Playgroud)
检查这个:并行编程