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