使用async / await是否会创建一个新线程?
我是TPL的新手,我想知道:C#5.0新增的异步编程支持(通过new async
和await
关键字)与线程的创建有何关系?
具体来说,是否async/await
每次使用都会创建一个新线程?并且,如果有许多使用的嵌套方法async/await
,是否为每个方法创建了一个新线程?
回答:
简而言之,
从使用Async和Await进行异步编程:线程
async和await关键字不会导致创建其他线程。异步方法不需要多线程,因为异步方法不会在自己的线程上运行。该方法在当前同步上下文上运行,并且仅在该方法处于活动状态时才在线程上使用时间。您可以使用Task.Run将受CPU约束的工作移至后台线程,但是后台线程对仅等待结果可用的进程没有帮助。
以上是 使用async / await是否会创建一个新线程? 的全部内容, 来源链接: utcz.com/qa/432770.html