为什么用await而不直接使用同步调用呢?
来源:3-2 【理论】什么是面向对象

2227181
2023-10-18
老师,async + await方便了调用异步动作来实现同步一样的顺序执行。我有个疑问,为什么不直接用同步调用,反而要用async + await呢?
把任务交给后台的异步任务调度会更有效率?还是什么其它的原因?
写回答
1回答
-
阿莱克斯刘
2024-01-17
web应用本身就是多线程模式,服务器会为每个请求分配工作线程。比如,有1000个人同一时间访问网站,这个情况就需要网站具有能够处理并发操作的能力。
在 web 服务器上,.NET 会维护一个专门用来用于处理请求的线程池。当请求到达时,将调度池中的线程以处理该请求。如果以同步方式处理请求,则处理请求的线程将在处理请求时处于繁忙状态,并且该线程无法处理其他请求。
在启动时看到大量并发请求的 web 应用中,或具有突发负载(其中并发增长突然增加)时,使 web 服务调用异步会提高应用程序的响应能力。异步请求与同步请求所需的处理时间相同。 如果请求发出需要两秒钟时间才能完成的 web 服务调用,则该请求将需要两秒钟,无论是同步执行还是异步执行。但是,在异步调用期间,线程在等待第一个请求完成时不会被阻止响应其他请求。因此,当有多个并发请求调用长时间运行的操作时,异步请求会阻止请求队列和线程池的增长。所以async + await更多的效果会体现在并发处理上,分别使用async和不用async两种方式跑一下压力测试,你就会看到区别了。
00
相似问题