IIS请求处理线程池是否与TPL线程池相同?

时间:2018-02-08 21:49:32

标签: asp.net iis async-await task-parallel-library

我知道任务并行库(TPL)利用线程池来运行任务 我还读到IIS使用了一个"线程池"处理传入的Http请求 我的问题是:这两个是指同一个线程池吗?

说我有这个控制器方法:

[HttpGet]
public async void GetAsyncTest()
{
    await Task.Run(() => {//Do some heavy CPU work here});
}

是否使用与请求线程相同的线程池中的线程处理任务?

1 个答案:

答案 0 :(得分:1)

简短的回答是

这就是启动 CPU密集型操作的任务没有意义的原因:它将使用来自同一池的线程作为其他传入请求,因此您的应用程序将不是能够像以前一样提供更多的请求。这超过了在Web应用程序中使事物异步的目的:它是关于释放线程以供外部 IO-heavy操作(db请求或http)时使用的其他请求请求执行另一项服务。