在 C# 中,启用并行化的操作(使用 "AsParallel()")会将操作分为多个并行任务,这些任务会在多个线程上同时执行。然而,最终的结果(输出的 "a")可能会以不同的顺序返回,这取决于每个任务的完成时间。\n\n虽然并行化可以提高处理速度,但它并不能保证结果的顺序。在这个特定的例子中,由于任务的处理时间相对较短,以至于它们几乎同时完成,因此结果可能以正序返回。\n\n如果你希望强制返回无序的结果,可以使用 "AsUnordered()" 方法,它会取消对结果的顺序保证,如下所示:\n\ncsharp\nvar a = Enumerable.Range(1, 10).AsParallel().AsUnordered().Where(d => d > 3).ToList();\n\n\n使用 "AsUnordered()" 方法后,结果的顺序将是不确定的,并且可能会随着执行的不同而不同。

C# 并行化操作结果顺序问题:为什么 AsParallel() 之后结果可能是正序?

原文地址: https://www.cveoy.top/t/topic/qrmH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录