我知道任务并行库(TPL)利用线程池来运行任务 我还读到IIS使用了一个"线程池"处理传入的Http请求 我的问题是:这两个是指同一个线程池吗?
说我有这个控制器方法:
[HttpGet]
public async void GetAsyncTest()
{
await Task.Run(() => {//Do some heavy CPU work here});
}
是否使用与请求线程相同的线程池中的线程处理任务?
答案 0 :(得分:1)
简短的回答是是。
这就是启动 CPU密集型操作的任务没有意义的原因:它将使用来自同一池的线程作为其他传入请求,因此您的应用程序将不是能够像以前一样提供更多的请求。这超过了在Web应用程序中使事物异步的目的:它是关于释放线程以供外部 IO-heavy操作(db请求或http)时使用的其他请求请求执行另一项服务。