2

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

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

提前致谢。

4

1 回答 1

2

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

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

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

于 2013-02-11T13:40:59.233 回答