当我的 asp.net 应用程序启动时,我在一个进程中关联了大约 40 个线程。这是正常的吗?抱歉这个菜鸟问题。实际运行的线程(状态)取决于我的机器的核心。例如,在 4 核 PC 中运行时,大约有 1-4 个运行线程(并行),进程中的线程总数约为 38-42 个。当在 24 核电脑上运行应用程序时,我仍然有 38-42 个线程。
我的用于获取正在运行的线程数的代码:
((IEnumerable)Process.GetCurrentProcess().Threads)
.OfType<System.Diagnostics.ProcessThread>()
.Where(t => t.ThreadState == System.Diagnostics.ThreadState.Running)
.Count()
获取线程总数的代码:
Process.GetCurrentProcess().Threads.Count
有人可以向像我这样的菜鸟解释一下吗?
提前致谢。
最佳答案
您的 ASP.NET 站点正在 Application Pool 中运行它将有一定数量的线程,并且如果需要的话可能会产生更多线程。每个请求都在一个单独的线程中处理,因此 IIS 将保留一些线程等待请求,因为使用现有线程比在需要时启动新线程更快。
IIS 还将在 Thread Pool 中拥有备用线程供您的应用程序使用。
所以,是的,IIS 有多个线程是正常的。
关于c# - 一个进程中的线程数量正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14809815/