私のプログラムのCPUアフィニティを照会し、システムで使用可能なCPUの総数から割り当てられているCPUの数を調べる必要があります。Win32 C++:プロセスのCPUアフィニティを取得しますか?
std::thread::hardware_concurrency()
は、親和性を反映しない値を返します。プロセス親和性を照会する(高速)方法はありますか?
私のプログラムのCPUアフィニティを照会し、システムで使用可能なCPUの総数から割り当てられているCPUの数を調べる必要があります。Win32 C++:プロセスのCPUアフィニティを取得しますか?
std::thread::hardware_concurrency()
は、親和性を反映しない値を返します。プロセス親和性を照会する(高速)方法はありますか?
これが働いているように思える:
int getAffinityCount()
{
DWORD64 dwProcessAffinity, dwSystemAffinity;
GetProcessAffinityMask(GetCurrentProcess(), &dwProcessAffinity, &dwSystemAffinity);
return __popcnt64(dwProcessAffinity);
}
'GetProcessAffinityMask()'はWindows専用であるため、この解決策は他のプラットフォームには移植できません。 –
これは大丈夫ですが、私のタイトルごとにWindowsソリューションを探しています。 – Tyson
それを行うにはポータブルな方法はありません。しかし、それを見つけるためにWindows API関数を検索する場合は、たくさんの例がありますが、ここではかなりの数が存在することさえあります。 –