c# - 一个进程中的线程数量正常吗?

标签 c# multithreading

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

相关文章:

c# - NavigationProgress 不显示进度条

android - 线程在 wait() 和 notify() 之后丢失消息

c# - 使用对象而不是 this 获取锁 - 线程

c# - 使用 jquery 和 c# mvc 将表数据返回为文件

c# - 设置 JPEG 元数据 - 实现问题

c# - Cake 脚本 Alias/Addin 的最基本示例是什么?

c++ - vmware中的线程编程, 'process scheduling'没有发生

c++ - 当另一个线程正在运行时,线程连接会导致段错误

c# - 不断检查 SQL Server 连接的标准方法是什么?

c# - .dll 文件不可访问