你好,
并行执行可以通过多种方式实现。从严格的手动“多线程”到使用微软创建的各种“辅助工具”。其中之一是Parallel类。
我的一个同事坚称Parallel.ForEach(或Parallel类整体)是“旧的”,不应该使用。相反,他说,应该使用异步操作。换句话说,应该使用Task.WhenAll()
而不是Parallel.ForEach()
。
当被问及为什么不使用Parallel.ForEach()
,当这正是所需的-同时执行多个昂贵的操作时,他回答说Parallel.ForEach()
已经过时,微软建议在可能的情况下使用异步/等待。
我在MSDN和Stackoverflow以及我能找到的所有地方搜索,但我找不到任何指向必须使用异步/等待而不是.Parallel的必要性。虽然您经常可以通过交换这些工具来实现类似的结果,但这并不意味着Parallel.ForEach已经过时。还是过时了吗?
有没有某个声誉良好的机构(MSDN?)发布的一些“最佳实践”或“建议”,指出Parallel.ForEach()
正在逐步淘汰,人们需要坚持创建、运行和等待任务?
请不要发布与Parallel VS Async相关的答案,因为这不是问题。
问题是:既然您可以使用异步/等待WhenAll
(WaitAll
等)使任务并行运行,那么在.NET 4.5及更高版本中,'Parallel'类是否已过时,陈旧或不时尚?