我何时应该在C#中使用async/await,何时应该使用Parallel.ForEach?并行和async/await是否具有相同的用途?它们之间有什么区别?
我何时应该在C#中使用async/await,何时应该使用Parallel.ForEach?并行和async/await是否具有相同的用途?它们之间有什么区别?
async/await与异步有关,而Parallel.ForEach
与并行有关。它们是相关的概念,但并不相同。
当您希望对集合中的所有项目执行相同操作,以并行方式阻塞当前线程直到所有操作完成时,使用Parallel.ForEach
。
当当前操作在特定异步操作完成之前无法取得更多进展但又不想阻塞当前线程时,使用async/await。这在以下两种情况下特别有用:
您可以通过启动一个新任务来组合并行和异步,该任务将调用Parallel.ForEach
,然后等待该任务。 (只是举个例子。)