当我的asp.net应用程序启动时,我在一个进程中有大约40个线程关联。这是正常的吗?抱歉,这个菜鸟问题。实际的线程运行(状态)取决于我的机器的核心。例如,在4核pc中运行时,我可以获得1-4个运行线程(并行)和一个进程中的线程总数约为38-42。当在24核pc中运行应用程序时,我仍然可以获得大约38-42个线程。
获取正在运行的线程数的我的代码:
((IEnumerable)Process.GetCurrentProcess().Threads)
.OfType<System.Diagnostics.ProcessThread>()
.Where(t => t.ThreadState == System.Diagnostics.ThreadState.Running)
.Count()
获取线程总数的代码:
Process.GetCurrentProcess().Threads.Count
有人可以向我这样的菜鸟解释一下..
提前致谢。
答案 0 :(得分:2)
您的ASP.NET站点在Application Pool中运行,该站点将具有一定数量的线程,并且如果需要可以生成更多线程。每个请求都在一个单独的线程中处理,因此IIS将保留一些线程等待请求,因为使用现有线程比在需要时启动新线程更快。
IIS还将在Thread Pool中有备用线程供您的应用程序使用。
所以,是的,IIS有多个线程是正常的。