2

VC++ でプロセス内の単一スレッドの CPU 使用率を見つける方法に関するツールを探しています。

誰かが私にツールを提供できれば、それは素晴らしいことです。

また、プログラムで行う方法を提供する方が良いかもしれません。

前もって感謝します。

4

3 に答える 3

3

おそらくGetThreadTimesを使用すると役立つでしょうか?

スレッドが別の実行可能ファイルに属しているかどうかを詳しく説明するには、次の行に (テストされていない) ものがあります。

// Returns true if thread times could be queried and its results are usable,
// false otherwise. Error handling is minimal, considering throwing detailed
// exceptions instead of returning a simple boolean.
bool get_remote_thread_times(DWORD thread_id, FILETIME & kernel_time, FILETIME & user_time)
{
  FILETIME creation_time = { 0 };
  FILETIME exit_time = { 0 };
  HANDLE thread_handle = OpenThread(THREAD_QUERY_INFORMATION, FALSE, thread_id);
  if (thread_handle == INVALID_HANDLE) return false;

  bool success = GetThreadTimes(thread_handle, &creation_time, &exit_time, &kernel_time, &user_time) != 0;

  CloseHandle(thread_handle);
  return success;
}
于 2009-07-29T12:38:30.640 に答える
3

プロセスエクスプローラーを使ってみてください..(ツール)..かなり便利です..

http://download.cnet.com/Process-Explorer/3000-2094_4-10223605.html

于 2009-07-29T12:40:50.487 に答える
2

ここでは Windows について質問していると思いますが、完全を期すために、Unix システムでこれを行う方法を 1 つ説明します。

/proc ファイル システムには、マシン上で実行中のすべてのプロセスに関する情報が含まれています。このディレクトリには、システム上のすべてのプロセスのサブディレクトリ (pid で名前が付けられています) があり、これらの各ディレクトリ内には stat というファイルがあります。「man proc」を見て、「stat」エントリを検索します。このファイルには多数の情報が含まれていますが、いくつかのフィールドを使用して、このプロセスが消費したユーザー モードおよびカーネル モードの時間を特定できます。

この知識を手に入れて、「タスク」と呼ばれるプロセスのサブディレクトリを探します...ここで、外部プロセスによって生成されたすべての子プロセスを見つけることができます..それらにcdすると、それぞれに stat ファイルがあります。

于 2009-07-29T13:02:45.683 に答える