【问题标题】:Calculate total number of threads in the operating system(Windows/Linux)计算操作系统中的线程总数(Windows/Linux)
【发布时间】:2020-10-08 03:34:23
【问题描述】:

如何使用 C#/LINQ 计算和显示操作系统中的线程总数, 基本上是在找这样的东西:

var query = from p in Process.GetProcesses()
       select new
       {
         count = sum(p.Threads.Count)
       };

【问题讨论】:

  • 不确定您实际在寻找什么,但有一点警告,当前的答案给出了当前创建的线程,例如。 TheGeneral 的答案在我的机器上输出 3347 个线程,但这个数字与操作系统可能同时运行的数字相差甚远。因此,如果我在哪里查看ThreadState == ThreadState.Running,结果只会得到 9。 vivek nuna 的第二个答案将查询限制为仅CurrentProcess,因此您只会获得一个代表您在自己的进程中创建的线程的数字,无论线程是否正在运行。
  • 这里查询ThreadState - var runningCount = Process.GetProcesses().SelectMany(x => x.Threads.OfType<ProcessThread>()).Count(x => x.ThreadState == ThreadState.Running);
  • @RandRandom 我认为,您应该发布您的代码作为答案:)
  • @PavelAnikhouski - 正如我所说的“不确定你真正在寻找什么”,所以我不知道 OP 想要什么,所以我不愿意回答恕我直言的问题清除

标签: c# linq .net-core


【解决方案1】:

也许

var count = Process.GetProcesses().Sum(p => p.Threads.Count);

【讨论】:

    【解决方案2】:

    您也可以通过以下方法获得。

    int count = Process.GetCurrentProcess().Threads.Count;
    

    【讨论】:

    • 目的是了解所有进程正在使用的系统中当前存在的线程数。您的查询似乎只针对当前进程
    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多