c#mono获取线程的cpu使用率

时间:2013-01-08 09:15:14

标签: c# linux process mono cpu-usage

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

我将mono更新为3.0.2版。
现在我可以获得正确的“Process.GetCurrentProcess().Threads”主题数,但没有ProcessThread个对象可以阅读“TotalProcessorTime

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

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

我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

显然,Process.Threads属性仅为partially implemented at the moment

// 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方面遇到了什么问题,此代码seems to work适用于我:

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);
        }
    }
}