【问题标题】:SetThreadAffinityMask has no effectSetThreadAffinityMask 没有效果
【发布时间】:2013-09-25 07:22:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ windows setthreadaffinitymask


    【解决方案1】:

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

    即将您的代码更改为

    SetThreadAffinityMask(GetCurrentThread(),1) 
    

    如果要设置整个过程的亲和度使用

    SetProcessAffinityMask(GetCurrentProcess(),1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-30
      • 2018-05-21
      • 2018-07-28
      • 2018-05-15
      • 1970-01-01
      • 2011-10-01
      • 2015-05-31
      • 2020-10-19
      相关资源
      最近更新 更多