【发布时间】:2018-07-19 14:30:27
【问题描述】:
我知道任务并行库 (TPL) 使用线程池来运行任务。
我还读到 IIS 使用“线程池”来处理传入的 Http 请求。
我的问题是:这两个是指同一个线程池吗??
假设我有这个控制器方法:
[HttpGet]
public async void GetAsyncTest()
{
await Task.Run(() => {//Do some heavy CPU work here});
}
是否会使用与请求线程相同的线程池中的线程来处理任务?
【问题讨论】:
-
推荐的方法是不要在你的应用程序中开始这样的工作。使用专门的服务来完成长期运行的工作。
-
听起来我误导了你。更多细节可以在msdn.microsoft.com/en-ca/library/ee817661.aspx和docs.microsoft.com/en-us/dotnet/standard/threading/…找到,他们进一步讨论了线程池,应该是一个单独的。
-
使用线程池中的线程处理请求。
Task.Run弊大于利,因为它将一个线程池线程交换为另一个导致不必要的线程切换。
标签: asp.net iis async-await task-parallel-library