我正在尝试确定 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 for
b) 然后通过
。下面的图片 Albahari 博客 显示了它是如何工作的,即一张一张地显示
问:有多少任务
A : 您可以通过使用 WithDegreeOfParallelism
强制 PLINQ 同时运行指定数量的任务来决定这一点
//create 5 task
List.AsParallel().WithDegreeOfParallelism(5)
检查这个:Parallel Programming
关于c# - AsParallel() 如何拆分它的 'source' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340798/