首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetThreadAffinityMask不起作用

SetThreadAffinityMask不起作用
EN

Stack Overflow用户
提问于 2013-09-25 07:22:01
回答 1查看 968关注 0票数 0

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

代码语言:javascript
复制
#include <iostream>
#include <windows.h>

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

但是当我打开任务管理器时,我发现CPU1没有被充分使用,并且它的使用率始终是changing.Why?CPU1,应该是100 %的使用吗?对不起我的英语。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-25 07:48:09

SetThreadAffinityMask设置线程的亲和力,而不是整个进程的亲和力。如果检查返回值,就会发现SetThreadAffinityMask失败了。要获得当前线程,请使用GetCurrentThread()而不是GetCurrentProcess()

即将代码更改为

代码语言:javascript
复制
SetThreadAffinityMask(GetCurrentThread(),1) 

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

代码语言:javascript
复制
SetProcessAffinityMask(GetCurrentProcess(),1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18998645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档