【发布时间】:2017-08-06 07:08:02
【问题描述】:
Parallel.ForEach() 和 MaxDegreeOfParallelism==1 是否保证按顺序处理输入可枚举?
如果答案是“否”,有没有办法强制执行这种行为?
【问题讨论】:
-
我能问一下你为什么想知道这个吗?只是学术好奇心,还是您遇到了某种现实问题?
-
@mituw16:我在链接的 MSDN 文章中找不到任何提示。进行一些测试也不能保证“是”。
-
这样的问题取决于实现细节,如果 msdn 没有说明,将来可以更改。你需要按顺序运行吗?然后使用
Queue<>。 -
如果您的测试代码需要按顺序处理实际情况下不按顺序排列的内容,那么您的测试就有缺陷。重写它以便验证结果不依赖于这个假设,或者重写被测代码以在
MaxDegreeOfParallelism为 1 时产生显式异常,这样您就可以确保它在所有情况下的行为一致。显然,第一个选项更可取。 -
@l33t - 查看源代码或运行测试不会告诉您有关未来实现的任何信息。您需要文档中的 explicit 语句。
标签: c# .net parallel.foreach