0

我想要一个只在 cpu1 上运行的测试程序,所以我这样写代码

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

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

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

4

1 回答 1

1

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

即将您的代码更改为

SetThreadAffinityMask(GetCurrentThread(),1) 

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

SetProcessAffinityMask(GetCurrentProcess(),1)
于 2013-09-25T07:48:09.260 回答