这些进程中的线程数是否正常?

时间:2013-02-11 10:01:57

标签: c# multithreading

当我的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

有人可以向我这样的菜鸟解释一下..

提前致谢。

1 个答案:

答案 0 :(得分:2)

您的ASP.NET站点在Application Pool中运行,该站点将具有一定数量的线程,并且如果需要可以生成更多线程。每个请求都在一个单独的线程中处理,因此IIS将保留一些线程等待请求,因为使用现有线程比在需要时启动新线程更快。

IIS还将在Thread Pool中有备用线程供您的应用程序使用。

所以,是的,IIS有多个线程是正常的。