![]() |
1
1
我对你问题的理解是 如果程序在中等待响应 等待WriteTextAsync() 那有什么好处呢? 对于客户端应用程序,如Windows应用商店、Windows桌面和Windows Phone应用程序,异步的主要好处是响应能力。这些类型的应用程序使用async主要是为了保持UI的响应性。对于服务器应用程序,异步的主要好处是可伸缩性。 我将尝试从web应用程序的角度进行解释。 假设您有一个web应用程序,当客户端启动ASP请求时,它依赖于外部资源,比如数据库调用。NET获取其一个线程池线程并将其分配给该请求。因为它是同步写入的,所以请求处理程序将同步调用该外部资源。这会阻止请求线程,直到对外部资源的调用返回。图1展示了一个包含两个线程的线程池,其中一个线程在等待外部资源时被阻塞。
图1同步等待外部资源 现在,如果第三个客户端同时请求,那么线程池中就没有线程可以分配第三个请求。 在异步调用中,线程不会被卡住,而是会被释放并返回到线程池,这将有助于为第三次调用提供服务。
当请求服务器活动结束时,链接数据库调用结束
在aync呼叫的简单类比中的吼叫图像
有很多事情在幕后发生。我是从
Async Programming : Introduction to Async/Await on ASP.NET
还有我的理解。强烈建议在使用前要有清楚的了解
|
![]() |
2
0
我指的是:
如果您想做的是同步等待,那么第一个调用没有任何问题。在控制台应用程序中,这是很正常的。 这个问题出现在带有UI的程序中,或者需要最佳利用CPU资源的程序中,最常见的情况是web应用程序。
拨打2,使用
相反,作者应该使用:
也许他们会进一步指出这一点,但你没有给我们书名让我们知道这一点。
当调用方法不能是
总的来说,我建议你找一本更好的书。当实际需要异步代码时,示例更容易理解。 |
![]() |
3
0
当你说
最后,当你说
|
![]() |
Sante Kyaku · 为什么我要用等待来获得承诺的结果? 2 年前 |
![]() |
Tomas Kubes · 是最大并发数。NET任务有限吗? 2 年前 |
![]() |
punkish · 并行异步获取/等待承诺。全部的 2 年前 |
![]() |
dapidmini · 未捕获的承诺嵌套异步函数承诺错误处理 2 年前 |
![]() |
smith · 如何在vue中使用wait/async 2 年前 |