小编典典

使用async / await是否会创建一个新线程?

c#

我是TPL的新手,我想知道:C#5.0新增的异步编程支持(通过new asyncawait关键字)与线程的创建有何关系?

具体来说,是否async/await每次使用都会创建一个新线程?并且,如果有许多使用的嵌套方法async/await,是否为每个方法创建了一个新线程?


阅读 1171

收藏
2020-05-19

共1个答案

小编典典

简而言之, NO

使用Async和Await进行异步编程:线程

async和await关键字不会导致创建其他线程。异步方法不需要多线程,因为异步方法不会在自己的线程上运行。该方法在当前同步上下文上运行,并且仅在该方法处于活动状态时才在线程上使用时间。您可以使用Task.Run将受CPU约束的工作移至后台线程,但是后台线程对仅等待结果可用的进程没有帮助。

2020-05-19