SetThreadAffinityMask无效

时间:2013-09-25 07:22:01

标签: c++ windows setthreadaffinitymask

我想测试程序只能在cpu1上运行,所以我编写代码

#include <iostream>
#include <windows.h>

    int main(){
        ::SetThreadAffinityMask(::GetCurrentProcess(),1);
        while(1)
          ;
       return 0;
    }

但是当我打开任务管理器时,我发现CPU1没有被完全使用,并且它的使用百分比总是在变化。为什么?CPU1应该100%使用? 对不起我的英文。

1 个答案:

答案 0 :(得分:1)

SetThreadAffinityMask设置THREAD的亲和力,而不是整个过程的亲和力。如果检查返回值,您应该看到SetThreadAffinityMask失败。要获取当前主题,请使用GetCurrentThread()而不是GetCurrentProcess()

即。将您的代码更改为

SetThreadAffinityMask(GetCurrentThread(),1) 

如果要设置整个过程的亲和力,请使用

SetProcessAffinityMask(GetCurrentProcess(),1)