ASP.NET async /等待第2部分

我从 this question获得了async / await-on-ASP.NET的各种好处.

我的理解是,异步与并行性不是一回事.因此,在Web服务器上,我想知道async / await给ASP.NET页面带来了多少好处.

IIS ASP.NET是否已经非常擅长为请求分配线程,如果onen页面忙于等待资源,服务器将只切换到处理另一个有工作要求的请求?

ASP.NET中可以使用有限数量的线程供ASP.NET使用 – 异步使用它们是否更有效?

正如Skeet先生在回答上述问题时指出的那样,我们不是在谈论阻止UI线程.我们已经是多线程的,并且在完成所有请求的任务之前无法完成Web响应,异步与否,对吗?

我猜它归结为:

对ASP.NET页面中的资源(例如文件数据库请求)进行异步读取与阻止它有什么好处?

解决方法

if one page is busy waiting for a resource the server will just switch to processing another request that has work to do?

我不这么认为.如果是这样的话,我会非常惊讶.这在理论上是可行的,但非常复杂.

There are a limited number of threads in the pool for ASP.NET to use – does async use them any more effectively?

是的,因为等待某事时,该请求的线程会立即返回到池中.

We’re already multi-threaded and the web response can’t be completed until all the request’s tasks are done,async or not,right?

那是正确的.服务器方案中的异步就是消除线程池上的压力.

Is there any benefit to an async read of a resource (say a file or DB request) in an ASP.NET page vs. blocking on it?

绝对!

如果阻止文件/服务调用/ db请求,则该线程将用于该操作的持续时间.如果等待文件/服务调用/ db请求,则该线程立即返回到线程池.

一个(真的很酷!)结果是你可以有一个正在进行的请求,虽然它是(a)等待一些操作,但没有线程服务该请求!零线程并发,如果你愿意的话.

当操作完成时,该方法在等待 – 从线程池中的(可能不同的)线程上恢复.

总结:异步比线程更好,所以在服务器端肯定有一个好处.

更多信息:我自己的intro to async postthis awesome video.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....