如何获取应用程序的运行线程的cpuload 我的应用程序在linux,mac NOT windows上运行。
我将mono更新为3.0.2版。
现在我可以获得正确的“Process.GetCurrentProcess().Threads
”主题数,但没有ProcessThread
个对象可以阅读“TotalProcessorTime
”
如何计算正在运行的应用程序的cpu使用/线程?
我可以获得正在运行的线程的linux-process-id吗?如果可以,我可以阅读proc目录结构,但我找不到任何方法。
我希望有人可以帮助我。
答案 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);
}
}
}