在PLINQ中,.AsSequential()和.AsOrdered()有什么区别?

25

我似乎无法理解AsSequential和AsOrdered之间的区别。我查看了MSDN上对这两者的文档,并搜索了互联网上的示例,但我只是一个简单的鞋匠,无法明确理解发生了什么。 如果可能的话,有人能否解释一下何时使用AsSequential与AsOrdered,必要时解释结果会有什么不同?

1个回答

27

AsOrdered指示并行LINQ引擎保留排序,但仍以并行方式执行查询。这会影响性能,因为引擎必须在并行执行后仔细合并结果。

AsSequential指示并行LINQ引擎按顺序执行查询,即不使用并行方式。


2
谢谢你的回复。所以AsSequential是覆盖了AsParallel吗?在什么情况下会使用AsSequential呢?它是用于未求值的可枚举对象,以防止其运行为AsParallel吗? - user2565663
2
当您有一个非常复杂的查询时,您可以通常指定使用并行处理。在查询的某些部分中,您可以选择顺序执行(使用AsSequential)。 - Ozkan
3
@Ozkan你能给一个例子吗? - Kyle Delaney
1
文档中写道:“此示例演示如何使用AsSequential方法指示PLINQ按顺序处理查询中所有后续运算符。”。https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-combine-parallel-and-sequential-linq-queries - Frank Seide MSFT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接