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

c#mono获取线程的cpu使用率,c#,linux,process,mono,cpu-usage,C#,Linux,Process,Mono,Cpu Usage,如何获得应用程序运行线程的CPU负载。 我的应用程序运行在linux而不是mac上 我将mono更新为3.0.2版 现在我可以获得“Process.GetCurrentProcess().Threads”的正确线程计数,但是没有ProcessThread对象可用于读取“TotalProcessorTime” 如何计算正在运行的应用程序的cpu使用率/线程数 我可以获取正在运行的线程的linux进程id吗?如果可以,我可以读取proc目录结构,但我找不到任何方法 我希望有人能帮助我。显然,进程。线

如何获得应用程序运行线程的CPU负载。
我的应用程序运行在linux而不是mac上

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

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

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


我希望有人能帮助我。

显然,
进程。线程的属性只有:

//这将返回一个大小正确的空ProcessThreads数组。
整数误差;
返回新的ProcessThreadCollection(新的ProcessThread[GetProcessData(pid,0,out错误)]);
不确定您在获取进程id时遇到了什么麻烦,请为我输入以下代码:

使用系统;
使用系统诊断;
使用System.IO;
类主类
{
静态void Main(字符串[]参数)
{
int pid=Process.GetCurrentProcess().Id;
DirectoryInfo taskDir=newdirectoryinfo(String.Format(“/proc/{0}/task”,pid));
foreach(taskDir.GetDirectories()中的DirectoryInfo threadDir)
{
inttid=Int32.Parse(threadDir.Name);
控制台写入线(tid);
}
}
}

是,这是正确的,但我无法将托管线程id引用到linux-thread-id:操作系统线程ID与托管线程没有固定关系,因为非托管主机可以控制托管线程和非托管线程之间的关系。具体地说,一个复杂的主机可以使用CLR宿主API针对同一个操作系统线程调度多个托管线程,或者在不同的操作系统线程之间移动一个托管线程。“Mono目前可能没有这样做,但我不会依赖它。