1

アプリケーションの実行中のスレッドの cpuload を取得するにはどうすればよいですか。
私のアプリケーションは Linux で動作しますが、Windows ではなく Mac です。

mono をバージョン 3.0.2 にアップデートします。
これで、" "の正しいスレッド数を取得できますが、" "を読み取るためのオブジェクトがありProcess.GetCurrentProcess().ThreadsませんProcessThreadTotalProcessorTime

実行中のアプリケーションの 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 に答える