移动开发 架构设计 编程语言 互联网 开发经验 Web前端
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
首页 开发总结 移动开发 编程语言 开发经验 Java开发
 当前位置:首页 > SetThreadAffinityMask > 正文显示
 最新推荐文章
互斥与临界区的比较 完成端口测试服务器功能的客户端 完成端口服务器源码 POW工作量证明原理
科大迅飞合成发音人列表 CreateFile和ANSI 获取扩展sd卡跟路径 android基础总结 内部存储
Android 获取系统各个目录 Android遍历手机内所有文件 Android权限管理之Perm Android教程 使用Ecli
Android SDK版本和AD 搭建最新版本的Android开发 SetThreadAffinit 直接显示图片
SetThreadAffinityMask   (138)

SetThreadAffinityMask(GetCurrentThread(), 0x00000001);//1 = 0 0 0 1,设置第一个核
SetThreadAffinityMask(GetCurrentThread(), 0x00000002);//2 = 0 0 1 0,设置第二个核
SetThreadAffinityMask(GetCurrentThread(), 0x00000004);//4 = 0 1 0 0,设置第三个核
SetThreadAffinityMask(GetCurrentThread(), 0x00000008);//8 = 1 0 0 0,设置第四个核
SetThreadAffinityMask(GetCurrentThread(), 0x00000003);//3 = 0 0 1 1,设置第一、二个核
SetThreadAffinityMask(GetCurrentThread(), 0x0000000F);//15 = 1 1 1 1,设置第一、二、三、四个核

SetThreadAffinityMask选择CPU某个核运行
函数说明:The SetThreadAffinityMask function sets a processor affinity mask for the specified thread. (该函数设置一个核心运行线程)
函数原型:
DWORD_PTR SetThreadAffinityMask(
HANDLE hThread,
DWORD_PTR dwThreadAffinityMask
);
参数说明:
hThread:要限制哪个线程
dwThreadAffinityMask:要在哪个核心上运行线程
注意事项:
dwThreadAffinityMask必须是进程的亲缘性屏蔽的相应子集。返回值是线程的前一个亲缘性屏蔽。例如,可能有一个包含4个线程的进程,它们在拥有4个CPU的计算机上运行。如果这些线程中的一个线程正在执行非常重要的操作,而你想增加某个CPU始终可供它使用的可能性,为此你对其他3个线程进行了限制,使它们不能在CPU0上运行,而只能在CPU1、2和3上运行。因此,若要将3个线程限制到CPU1、2和3上去运行,可以这样操作:
[cpp]
//线程0只能在cpu 0上运行
SetThreadAffinityMask(hThread0,0x00000001);
//线程1,2,3只能在cpu 1,2,3上运行
SetThreadAffinityMask(hThread1,0x0000000E);
SetThreadAffinityMask(hThread2,0x0000000E);
SetThreadAffinityMask(hThread3,0x0000000E);
[/cpp]

测试环境:i3-4130(双核心四线程)
[cpp]
SetThreadAffinityMask(GetCurrentThread(), 0x00000001);//1 = 0 0 0 1,设置第一个核
SetThreadAffinityMask(GetCurrentThread(), 0x00000002);//2 = 0 0 1 0,设置第二个核
SetThreadAffinityMask(GetCurrentThread(), 0x00000004);//4 = 0 1 0 0,设置第三个核
SetThreadAffinityMask(GetCurrentThread(), 0x00000008);//8 = 1 0 0 0,设置第四个核
SetThreadAffinityMask(GetCurrentThread(), 0x00000003);//3 = 0 0 1 1,设置第一、二个核
SetThreadAffinityMask(GetCurrentThread(), 0x0000000F);//15 = 1 1 1 1,设置第一、二、三、四个核
[/cpp]
 最热文章
http://www.3 Android遍历手机内 获取扩展sd卡跟路径 Android 获取系统
android基础总结 科大迅飞合成发音人列表 搭建最新版本的Andro 直接显示图片
Android SDK版 Android教程 使用 Android权限管理之 SetThreadAff
Zlib库对网页中def 实时视频传输的关键技术 VC++内存泄漏的检测与 C++中的STL中map
CreateFile和A 在Visual C++中 C++中的STL中map vc, c++ stl
移动开发 架构设计 编程语言 互联网 开发经验 Web前端
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
 网站联系 QQ: 121756557 E-Mail: 121756557@qq.com ©2018