在 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实现异步操作

asp.net webform中使用async,await实现异步操作

Async Void、ASP.Net 和未完成操作计数