2017-11-27 8 views
1

私のプログラムのCPUアフィニティを照会し、システムで使用可能なCPUの総数から割り当てられているCPUの数を調べる必要があります。Win32 C++:プロセスのCPUアフィニティを取得しますか?

std::thread::hardware_concurrency()は、親和性を反映しない値を返します。プロセス親和性を照会する(高速)方法はありますか?

+0

それを行うにはポータブルな方法はありません。しかし、それを見つけるためにWindows API関数を検索する場合は、たくさんの例がありますが、ここではかなりの数が存在することさえあります。 –

答えて

0

これが働いているように思える:

int getAffinityCount() 
{ 
    DWORD64 dwProcessAffinity, dwSystemAffinity; 
    GetProcessAffinityMask(GetCurrentProcess(), &dwProcessAffinity, &dwSystemAffinity); 
    return __popcnt64(dwProcessAffinity); 
} 
+0

'GetProcessAffinityMask()'はWindows専用であるため、この解決策は他のプラットフォームには移植できません。 –

+0

これは大丈夫ですが、私のタイトルごとにWindowsソリューションを探しています。 – Tyson

関連する問題