考虑在IIS上运行在ASP.Net web应用程序中的下列代码.
_thread = new Thread(Method1)
_thread.Start();
由于ASP.Net进程中有一个线程池,这段代码的效果如何?特别是..。
_thread.Start()
之后,池被回收了?IIS是否允许在关闭应用程序池之前完成此线程?Method1()
中运行的代码是IO绑定的。发布于 2016-02-12 11:29:18
new Thread
时,该线程不是线程池的一部分。你完全靠自己了。HttpApplication
派生对象)。发布于 2016-02-13 01:46:28
ASP.NET 4.5+ (您可以在其中使用async-await
)使用相同的线程池来处理请求并通过Task.Run
调度任务执行。
当您在处理一个Task.Run
请求时使用ASP.NET时,您将将上下文更改为一个新的线程池线程,并将当前线程池线程返回给线程池。当任务完成时,您将切换回另一个线程池线程。
使用Task.Run
处理ASP.NET请求至少需要多一个线程池线程,并且至少需要两个上下文开关。
底线是,它需要更多的资源,需要更多的时间来处理请求。
https://stackoverflow.com/questions/35360895
复制相似问题