c# mono获取线程的CPU使用情况

本文关键字:用情 情况 CPU mono 获取 线程 | 更新日期: 2023-09-27 17:51:02

如何获得应用程序运行线程的cpuload
我的应用程序在linux上运行,mac不是windows。

我将mono更新到3.0.2版本。
现在我可以得到"Process.GetCurrentProcess().Threads"的正确线程计数,但没有ProcessThread对象可用于读取"TotalProcessorTime"

我该如何计算我正在运行的应用程序的cpu使用率/线程数?

我可以得到我正在运行的线程的linux-process-id吗?如果可以,我可以读取proc目录结构,但我找不到任何方法。

我希望有人能帮助我。

c# mono获取线程的CPU使用情况

显然Process.Threads属性目前仅部分实现:

// This'll return a correctly-sized array of empty ProcessThreads for now.
int error;
return new ProcessThreadCollection(new ProcessThread[GetProcessData (pid, 0, out error)]);

不知道你遇到了什么麻烦得到进程id,这段代码似乎为我工作:

using System;
using System.Diagnostics;
using System.IO;
class MainClass
{
    static void Main(string[] args)
    {
        int pid = Process.GetCurrentProcess().Id;
        DirectoryInfo taskDir = new DirectoryInfo(String.Format("/proc/{0}/task", pid));
        foreach(DirectoryInfo threadDir in taskDir.GetDirectories())
        {
            int tid = Int32.Parse(threadDir.Name);
            Console.WriteLine(tid);
        }
    }
}