1

我怎样才能获得我的应用程序的运行线程的 cpuload。
我的应用程序在 linux 上运行,而不是在 windows 上运行。

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

我可以做些什么来计算我正在运行的应用程序的 cpu 使用/线程?

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

我希望有一个人可以帮助我。

4

1 回答 1

2

显然,该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);
        }
    }
}
于 2013-01-08T15:57:48.723 回答