如果我在 IEnumerable (list) 中有以下顺序:
1 - 2 - 3 - 4 - 5
如果我对此运行 PLINQ 查询:
list.AsParallel().AsOrdered().WithDegreeOfParallelism(10).Select(
s => SomeDelegateFunction(s)).AsSequential().ToList();
对于上面的查询,我在我的日志记录(内部委托函数)中看到它使用多个线程,但不维护列表的处理顺序。但是对于以下查询,我确实维护了序列,但使用单个线程来执行整个操作:
list.AsParallel().AsOrdered().WithDegreeOfParallelism(10).AsSequential().Select(
s => SomeDelegateFunction(s)).ToList();
这两个查询之间的区别是第二个查询中的“AsSequential()”,我遇到的问题是当我使用 AsSequential() 时:
1 - 为什么它不使用多线程?它本可以将工作分解为:
1 - 2 (Give it to thread 1)
3 - 4 - 5 (Give it to thread 2)
相反,它确实执行 1 - 2 - 3 - 4 - 5 (按此顺序),但它在单个线程上执行 - 为什么?
基本上,我需要在作为输入但在多个线程上输入的 ORDER 中处理我的列表。
有任何想法吗 ?