异步方法不需要额外的线程?

Tar*_*rik 4 .net c# async-await

In MSDN, there is a paragraph like this:

async和await关键字不会导致创建其他线程.异步方法不需要多线程,因为异步方法不能在自己的线程上运行.该方法在当前同步上下文上运行,并仅在方法处于活动状态时在线程上使用时间.您可以使用Task.Run将CPU绑定的工作移动到后台线程,但后台线程无助于正在等待结果可用的进程.

但看起来我需要对粗体文本提供更多帮助,因为我不确定它究竟意味着什么.那怎么async没有使用Threads呢?

资料来源:http://msdn.microsoft.com/en-us/library/hh191443.aspx

Ree*_*sey 11

有许多异步操作不需要使用多个线程.像异步IO这样的东西通过中断来工作,这些中断在数据可用时发出信号.这允许您进行不使用额外线程的异步调用 - 当信号发生时,操作完成.

Task.Run可用于创建自己的基于CPU的异步方法,这些方法将在其自己的单独线程上运行.该段旨在表明这不是唯一的选择.

  • 在[Lucian Wischik的演讲]中有一个非常好的可视化(http://blogs.msdn.com/b/lucian/archive/2012/03/29/talk-async-part-1-the-message-loop-and-该任务-type.aspx).它在VB中,但C#的概念是相同的.我也无法抗拒插入[我自己的介绍帖子](http://nitoprograms.blogspot.com/2012/02/async-and-await.html),其中包括重要的细节,如异步上下文和它是如何使用的. (2认同)