在IIS上的Web应用程序中运行时,我对System.Threading.Threadpool有一个一般性的问题。
假设我们一次执行了2个请求,然后通过ThreadPool.QueueUserWorkItem方法启动了几个线程。这两个请求将共享ThreadPool,还是将两个请求对ThreadPool的调用在两个单独的池中进行操作?
这是在IIS6和7中。
感谢您的任何见解。
最佳答案
这是MSDN文档中有关ThreadPool class的报价:
There is one thread pool per process. The thread pool has a default size of 250 worker threads per available processor, and 1000 I/O completion threads.
在IIS6和IIS7中,任何给定的ASP.NET应用程序都通过应用程序池基础结构承载在单个进程(w3wp.exe)内。应用程序池可以通过将多个Web应用程序保留在不同的AppDomain中来承载多个Web应用程序,但它可以在一个物理站点中运行服务器上的进程。
这两个事实实际上意味着来自运行中的Web应用程序实例的所有线程都在同一.NET线程池中执行。
关于multithreading - IIS上下文中的线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1453283/