在 IIS 上的 Web 应用程序中运行时,我有一个关于 System.Threading.Threadpool 的一般性问题。假设我们有 2 个请求同时执行,我们通过 ThreadPool.QueueUserWorkItem 方法启动了几个线程。这两个请求会共享 ThreadPool,还是两个请求对 ThreadPool 的调用会在两个单独的池中运行?
这是在 IIS6 和 7 中。
感谢您的任何见解。
在 IIS 上的 Web 应用程序中运行时,我有一个关于 System.Threading.Threadpool 的一般性问题。假设我们有 2 个请求同时执行,我们通过 ThreadPool.QueueUserWorkItem 方法启动了几个线程。这两个请求会共享 ThreadPool,还是两个请求对 ThreadPool 的调用会在两个单独的池中运行?
这是在 IIS6 和 7 中。
感谢您的任何见解。
这是 MSDN 文档中关于ThreadPool 类的引用:
每个进程有一个线程池。线程池的默认大小为每个可用处理器 250 个工作线程和 1000 个 I/O 完成线程。
在 IIS6 和 IIS7 中,任何给定的 ASP.NET 应用程序都通过应用程序池基础结构托管在单个进程 ( w3wp.exe ) 内。
应用程序池可以通过将多个 Web 应用程序保存在不同的 AppDomain 中来托管它们,但它在服务器上的一个物理进程内运行。
这两个事实实际上意味着来自正在运行的 Web 应用程序实例的所有线程都在同一个 .NET 线程池中执行。