我知道任务并行库(TPL)使用线程池运行任务。
我还读到IIS使用“线程池”来处理传入的Http请求。
我的问题是:,这两者是指同一个线程池吗??
假设我有一个控制器方法:
[HttpGet]
public async void GetAsyncTest()
{
await Task.Run(() => {//Do some heavy CPU work here});
}任务是否使用与请求线程相同的线程池中的线程处理?
发布于 2018-02-10 20:37:35
简单的回答是是。
这就是为什么启动CPU密集型操作的任务没有意义:它将使用来自同一个池的线程作为其他传入请求,因此您的应用程序将无法像之前那样处理更多的请求。这超出了在web应用程序中实现异步的目的:它是关于释放线程供其他请求使用,同时执行外部IO重操作 (db请求或对另一个服务的http请求)。
https://stackoverflow.com/questions/48695337
复制相似问题