4

wmi クエリ (すべてのスレッドと各スレッドの詳細情報) を使用してプロセス情報を要求するアプリケーションを見つけました。このアプリケーションを修正して、スレッドごとの CPU 使用率を決定しました。(アプリケーションの名前が「appy」の場合、スレッドの名前は「appy/0」、「appy/1」、...)

私の質問: IDE または別のデバッグ環境の外でこれらのスレッドを簡単に識別する方法はありますか?

メソッドがあることは知ってNameThreadForDebuggingいますが、これはデバッグ環境の外ではアクセスできません。

そのスレッドの作成時に独自のスレッド ID を割り当てる方法はありますか? または、辞書を作成し、その辞書をファイルに書き込んで外部からアクセスできるようにすることで、誰が誰であるか (スレッド) を知る唯一の方法です。

前もって感謝します!

4

1 に答える 1

4

いいえ、独自のスレッド ID を割り当てることはできません。スレッド ID はCreateThread関数によってスレッドに割り当てられ、その存続期間中に変更することはできません。そして、あなたが言ったように、外部アプリケーション(デバッガーではない)でスレッドを識別する唯一の方法は、スレッド識別をそのアプリケーションと何らかの形で共有することです。

ただし、ファイルを介して情報を共有する必要はありません。たとえば、共有メモリ ブロックを使用できます。ファイルを使用するよりもはるかに効率的です。

GetCurrentThreadIdスレッド ID に関する参照として、次の関数でコメントを取得できます。

スレッドが終了するまで、スレッド識別子はシステム全体でスレッドを一意に識別します。

于 2012-05-04T07:30:17.633 に答える