Windows API または現在のスレッドが実行されている物理プロセッサ/コアを特定する方法はありますか? その情報は必要ありません。私はただ興味があります。
スレッドが実行できるプロセッサには興味がありません。現在、どちらで実行されているかを正確に知りたいです。スレッドが次から次へとかなり速く切り替わることは知っています...
スレッドはプロセッサごとに頻繁に切り替わるため、意味がありませんが、GetCurrentProcessorNumber
.
他の人が言ったように、GetProcessAffinityMask
orを使用できますGetThreadIdealProcessor
が、これらはスレッドにアフィニティ マスクまたは理想的なプロセッサを既に設定している場合にのみ機能します。
GetProcessAffinityMaskを使用してプロセッサ アフィニティをクエリできます。プロセッサ アフィニティを設定していない場合、スレッドがプロセッサ間を移動する可能性があるため、結果がどれほど役立つかはわかりません。
Windows API を使用してプロセスまたはスレッドが実行されるプロセッサを制御するには、SetThreadAffinityMaskまたはSetProcessAffinityMaskを使用できます。
これらは、ビットマスクにビットを設定することで機能します。各ビットは、スレッドまたはプロセスをスケジュールできるプロセッサを表します。
BOOL WINAPI SetProcessAffinityMask(
__in HANDLE hProcess,
__in DWORD_PTR dwProcessAffinityMask
);
GetProcessAffinityMaskを呼び出して、これらの呼び出しで使用できるプロセッサを検出します。