当在 IIS 上的 Web 应用程序中运行时,我有一个关于 System.Threading.Threadpool 的一般问题。假设我们同时执行 2 个请求,并且我们通过 ThreadPool.QueueUserWorkItem 方法启动了几个线程。这两个请求会共享 ThreadPool,还是这两个请求对 ThreadPool 的调用会在两个单独的池中进行操作?

这是在 IIS6 和 7 中。

感谢您的任何见解。

有帮助吗?

解决方案

这是 MSDN 文档中关于 线程池类:

每个进程有一个线程池。线程池的每个可用处理器的默认大小为250个工作线程,1000 I/O完成线程。

在 IIS6 和 IIS7 中,任何给定的 ASP.NET 应用程序都托管在单个进程内(w3wp.exe)通过应用程序池基础设施。
应用程序池可以通过将多个 Web 应用程序保存在不同的 AppDomain 中来托管它们,但它在服务器上的一个物理进程内运行。

这两个事实意味着在实践中,正在运行的 Web 应用程序实例中的所有线程都在同一个 .NET 线程池内执行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top