テストプログラムをcpu1でのみ実行したいので、そのようなコードを記述します
#include <iostream>
#include <windows.h>
int main(){
::SetThreadAffinityMask(::GetCurrentProcess(),1);
while(1)
;
return 0;
}
しかし、タスクマネージャーを開くと、CPU1が完全に使用されておらず、使用率が常に変化していることがわかります。CPU1を100%使用する必要があるのはなぜですか。私の英語に申し訳ありません。
SetThreadAffinityMask
プロセス全体ではなく、THREADのアフィニティを設定します。戻り値を確認するSetThreadAffinityMask
と、失敗していることがわかります。現在のスレッドを取得するには、GetCurrentThread()
notを使用しますGetCurrentProcess()
。
つまり、コードを次のように変更します
SetThreadAffinityMask(GetCurrentThread(),1)
プロセス全体の親和性を設定したい場合は、
SetProcessAffinityMask(GetCurrentProcess(),1)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加