我想测试程序只能在cpu1上运行,所以我编写代码
#include <iostream>
#include <windows.h>
int main(){
::SetThreadAffinityMask(::GetCurrentProcess(),1);
while(1)
;
return 0;
}
但是当我打开任务管理器时,我发现CPU1没有被完全使用,并且它的使用百分比总是在变化。为什么?CPU1应该100%使用? 对不起我的英文。
答案 0 :(得分:1)
SetThreadAffinityMask
设置THREAD的亲和力,而不是整个过程的亲和力。如果检查返回值,您应该看到SetThreadAffinityMask
失败。要获取当前主题,请使用GetCurrentThread()
而不是GetCurrentProcess()
。
即。将您的代码更改为
SetThreadAffinityMask(GetCurrentThread(),1)
如果要设置整个过程的亲和力,请使用
SetProcessAffinityMask(GetCurrentProcess(),1)