繁体   English   中英

ASP.NET async /等待第2部分

[英]ASP.NET async/await part 2

我从这个问题中得到了 async / await-on-ASP.NET的各种好处。

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

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

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

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

我猜它归结为:

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

如果一个页面忙于等待资源,服务器将只切换到处理另一个有工作要求的请求?

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

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

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

我们已经是多线程的,并且在完成所有请求的任务之前无法完成Web响应,异步与否,对吗?

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

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

绝对!

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

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

当操作完成时,该方法在await - 从线程池中的(可能不同的)线程上恢复。

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

更多信息:我自己介绍async这个很棒的视频

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM