我一直在阅读很多关于IIS如何管理http请求的线程(一旦需要就将它们从池中取出并在处理完请求后“释放”)...
关于异步请求的整个概念,例如ASP.NET MVC,用于在侧面执行长等待I / O操作时将线程“释放”回池。
但是我无法理解的是 - 如果我使用Thread.Start()
启动“正常”线程 - 这些线程是“未解散的”,对吧?并且它们不会耗尽IIS请求线程池 - 这是正确的吗??
我尝试使用谷歌搜索,但找不到确切的答案。我知道Thread.Start
根本不使用.NET的内置ThreadPool
- 但我怀疑IIS使用与其请求线程相同的机制,可能是IIS“请求池”是与.NET的ThreadPool
不同,并使用一些较低级别的池,以便我的Thread.Start
也会在那里结束?
我想我要问的是 - ASP.NET应用程序中Thread.Start()
是否存在限制,并且由于线程排队,很多Thread.Start会在高负载期间阻止我的Web应用程序?
更新:找到了这个答案,但它没有解释为什么以及会发生什么:Why ASP.NET kills my background thread?