-->

异步/等待和在C#平行[关闭](Async/await and parallel in C# [cl

2019-07-17 17:06发布

什么时候应该使用异步/等待我时,应在C#中使用parallel.foreach? 平行和异步/等待起到相同的作用? 什么是他们的区别是什么?

Answer 1:

异步/ AWAIT为约异步的,而Parallel.ForEach约为并行性 。 他们是相关的概念,但不一样的。

Parallel.ForEach当你想在集合中执行的所有项目相同的操作,在并行,阻止当前线程,直到所有操作完成时使用。

异步/的await时使用当前的操作不能做任何更多的进展,直到特定的异步操作已完成,但你不希望阻止当前线程。 这是在两种情况下尤其有用:

  • 编写代码基本上序幕各种异步操作,一前一后,在UI线程上,简要地访问UI操作之间。 (这是比这更普遍,但是这是一个简单的例子。)你不想阻止用户界面线程,但管理所有这些异步操作是一种痛苦,否则。
  • 在同一时间处理大量的长时间运行的操作-例如在一个Web服务器。 每个单独的请求可能需要很长的时间,由于调用到其他网络服务,数据库等等 - 但你不希望有每个请求一个线程,线程作为是一个相对昂贵的资源。

您可以通过踢了一个新的任务,它将调用结合并行和异步Parallel.ForEach ,然后等待该任务。 (正如一个例子。)



文章来源: Async/await and parallel in C# [closed]