zoukankan      html  css  js  c++  java
  • Process和Thread在指定CPU运行

    最近帮朋友写了一个多线程程序,他那边一运行多线程就出错,我这边却没有任何问题,找了好久才找到解决方法,原来是CPU的问题,有朋友遇到同样的问题,可以一起参考

    //进程与指定cpu绑定

    SetProcessAffinityMask(GetCurrentProcess(), dwMask);

     //线程与指定cpu绑定

    SetThreadAffinityMask(GetCurrentThread(),dwMask);

     dwMask为CPU序号的或运算值:1(0001)代表只运行在CPU1,2(0010)代表只运行在CPU2,3(0011)代表可以运行在CPU1和CPU2,以此类推。

    //使用8核CPU

    SetThreadAffinityMask(-1,254)

    因此,若要将3个线程限制到CPU1、2和3上去运行,可以这样操作

    //Thread 0 can only run on CPU 0. 
    
    SetThreadAffinityMask(hThread0, 0001); //第0位是1
    
    SetThreadAffinityMask(hThread1, 0002); 
    
    SetThreadAffinityMask(hThread2, 0003); 
    
    SetThreadAffinityMask(hThread3, 0004);

    如果要将3个进程限制到CPU1、2和3上去运行,可以这样操作

    SetProcessAffinityMask( hProcess0, 0001);// use CPU 0 only
    
    SetProcessAffinityMask( hProcess1, 0002 );// use CPU 1 only
    
    SetProcessAffinityMask( hProcess2, 0003 );// allow running on both CPUs
    
    SetProcessAffinityMask( hProcess3, 0004 );// use CPU 4 only

    应用场景举例:

    将UI线程限制在一个CPU,将其他实时性要求较高的线程限制在另一个CPU。这样,当UI需要占用大量CPU时间时,就不会拖累其他实时性要求较高的线程的执行。同样可以将UI线程与一些优先级不高但耗时的异步运算线程设置在不同CPU上,避免UI给人卡顿的感觉。

    相关文章https://support.microsoft.com/zh-cn/kb/932375

  • 相关阅读:
    Cs231n课堂内容记录-Lecture1 导论
    Linux实时查询GPU使用命令
    导出excel的简单方法
    正则表达式的一些应用
    4、Python语法之变量
    javaScript中对typeof 和 instanceof 的使用及理解
    JavaScrpt 变量作用域
    真香的flex弹性布局
    css调试与样式优先级
    css3新样式
  • 原文地址:https://www.cnblogs.com/testsec/p/5897670.html
Copyright © 2011-2022 走看看