2009-08-27 5 views
1

Windows APIがあるか、現在のスレッドが実行されている物理プロセッサ/コアを判断する方法はありますか?私はその情報は必要ありません。私はちょうど興味がある。自分のコードが現在実行されている物理プロセッサを特定する

スレッドが実行できるプロセッサには関心がありません。私はそれが現在実行しているものを正確に知りたいと思います。スレッドがかなり速く切り替わることはわかっています...

答えて

3

スレッドは、多くの場合、プロセッサからプロセッサに切り替わりますので、それは一種の無意味だが、あなたは他の人が言ったように、あなたがGetProcessAffinityMaskやGetThreadIdealProcessorを使用することができますが、あなたはすでにしている場合、それらはのみ動作しますGetCurrentProcessorNumber

を使用することができますそのスレッドに対してアフィニティマスクまたは理想的なプロセッサを設定します。

+1

これは可能だとは思いませんでしたが、それを反映するために私の答えを編集していることが判明しました。 –

+0

ニースは、それが可能であることを認識していませんでした。 –

+0

私は統計や何らかの視覚化のような情報を使ってクールな無駄なことをすることができます;)ありがとう – Nick

1

Windows APIを使用してプロセスまたはスレッドを実行するプロセッサを制御する場合は、SetThreadAffinityMaskまたはSetProcessAffinityMaskを使用できます。これらの呼び出しで使用するために利用可能なプロセッサ発見する

BOOL WINAPI SetProcessAffinityMask(
    __in HANDLE hProcess, 
    __in DWORD_PTR dwProcessAffinityMask 
); 

コールGetProcessAffinityMask

各ビットはプロセッサあなたのスレッドまたはプロセスを表すビットマスク内のビットを設定することにより、これらの作業をするためにスケジュールすることができます。

2

GetProcessAffinityMaskでプロセッサアフィニティをクエリできます。プロセッサアフィニティを設定していない場合は、プロセッサ間でスレッドが飛び交うことができるので、結果がどれほど有益であるかわかりません。

関連する問題