-3 c# task async-await webapi
为什么我们在 WebApi c# 中需要异步任务,无论如何,默认的 Web API 请求将仅通过创建或重用现有线程来运行。那么线程已经被使用了?
不要将异步与并行混淆。
异步意味着当您等待某些 I/O 操作的响应时,当前线程被释放。(本地存储、网络请求等)
并行意味着同时运行两组或更多组代码。这就是多线程。
异步代码与多线程无关。实际上恰恰相反:异步代码的部分好处是不需要更多线程。
例如,考虑从数据库读取数据的 Web API 调用。当 1000 个请求同时传入时会发生什么?
如果代码是同步编写的,则每个请求都需要一个单独的线程。但 ASP.NET 有最大线程数。这样就达到了最大值,其余的请求将不得不等到第一个请求中的一些请求完成后才能开始。
如果代码是异步编写的,那么一旦发出数据库请求,线程就会被释放,同时等待数据库的响应。在等待期间,ASP.NET 可以使用该线程开始处理新请求。
结果是您需要更少的线程来完成相同数量的工作。这也意味着您可以使用相同数量的资源完成更多工作。
Microsoft 在这方面有一系列写得非常好的文章值得一读:使用 async 和 wait 进行异步编程。那篇文章有一个关于做早餐的类比,有助于解释异步编程的真正含义。
| 归档时间: |
|
| 查看次数: |
1994 次 |
| 最近记录: |