在 asp.net 中,使用 Async 技术将占用多少工作线程
Posted
技术标签:
【中文标题】在 asp.net 中,使用 Async 技术将占用多少工作线程【英文标题】:In asp.net, how many worker threads will be tied up using Async technique 【发布时间】:2020-04-16 03:19:10 【问题描述】:一个应用同时向网络服务器发出 3 个 HTTP 请求。使用异步技术,有多少工作线程将被捆绑等待数据
【问题讨论】:
希望没有,但取决于实施。如果真的是异步的,它应该是无。 使用异步 API 的全部意义在于线程不会被“捆绑”。当异步操作启动时,线程会自行产生,调度程序将重新调整线程的用途(这是因为线程相对昂贵(因为最小线程堆栈大小等)。 【参考方案1】:它不会被捆绑,因为当你做异步工作时,你并不总是使用线程。
例如,如果您发出 async 网络服务请求,您的客户端将不会在“发送”和“接收”之间使用任何线程。 您在“发送”之后放松,“接收”发生在 I/O 完成端口上,此时您的回调被调用,然后您将再次使用线程。 (请注意,对于这种情况,您的回调是在 i/o 线程上执行的 ASP.NET 仅使用 工作线程,并且仅包括工作线程>.)
【讨论】:
以上是关于在 asp.net 中,使用 Async 技术将占用多少工作线程的主要内容,如果未能解决你的问题,请参考以下文章
通过 ASP.NET Web API 有效地使用 async/await
如何在 ASP.NET Web API 中使用非线程安全的 async/await API 和模式?
为啥总是在 asp.net mvc 中同步异步操作(async await)
asp.net webform中使用async,await实现异步操作