进程/线程优先级,亲缘性

 

 

亲缘性的意思是 进程只在某个cpu上运行 ,比如

BOOL WINAPI SetProcessAffinityMask(
  _In_ HANDLE    hProcess,
  _In_ DWORD_PTR dwProcessAffinityMask
);

dwProcessAffinityMask 如果是 0 , 代表当前进程只在cpu0 上工作;
如果是 0x03 , 转为2进制是 00000011 . 代表只在 cpu0 或 cpu1上工作;

 

优先级:

 //注意, 如果线程的优先级会随着进程的优先级浮动
 //线程:SetThreadPriority, GetThreadPriority
    SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS );
    DWORD pri = GetPriorityClass(GetCurrentProcess());

亲缘性:

    


    #define CPU_MASK(mask) (1<<(mask))

    SYSTEM_INFO sys;
    GetSystemInfo(&sys);
    DWORD cpuCount = sys.dwNumberOfProcessors; //cpu数量 4;

    DWORD_PTR pmask, smask; //进程mask, 系统mask;

    /*
        CPU_MASK(3) 代表 1<<3 -> 2进制 : 1000 . 意思是只能使用 cpu3 (cpu0 起算). 
        这个值不要超过cpuCount;

        SetProcessAffinityMask 设置之后可以在任务管理器中查看相关性.
                               一旦设置, 所有线程将只在这些cpu中执行.子进程也将继承.
        
        SetThreadAffinityMask 用法类似,但 mask 必须是进程使用的cpu 中的一项或几项;

        GetProcessAffinityMask 将返回2个mask , 一个是当前进程 一个是系统
    */

    SetProcessAffinityMask(GetCurrentProcess(),CPU_MASK(3)); 

    GetProcessAffinityMask(GetCurrentProcess(),&pmask,&smask);

    cout << hex <<pmask << ',' << smask << endl;

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值