[英]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
比线程更好,所以在服务器端肯定有一个好处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.