SetThreadAffinityMask中掩码的问题
程序员文章站
2022-05-18 14:48:33
...
在我们进行多线程开发的过程时,常常需要自己分配线程到不同的处理器上运算,以保证我们程序的运行效率。SetThreadAffinityMask是我们常见的选择。
1.MSDN中函数的定义
DWORD_PTR WINAPI SetThreadAffinityMask(
_In_ HANDLE hThread,
_In_ DWORD_PTR dwThreadAffinityMask
);
参数hThread
就是我们在使用传进去线程的句柄,dwThreadAffinityMask
就是我们要传入的处理器掩码
2.掩码常见问题
0x00000001,折就是一个最常见的处理器掩码,这个就是代表使用第一个处理器,如下图所示的i5双核心四线程的处理器CPU0(逻辑上的第一个)。0x00000008就是代表在CPU3(逻辑上的第四个)上运行
对于以前的电脑大多都是这样双核心四线程,我来解释下8核处理器及更多cpu核心的是如何分配到后四个处理器上的
如上图所示,一个32核cpu,当我们想使用
第6个cpu运行线程时,那么掩码就是0x00000020
第7个cpu运行线程时,那么掩码就是0x00000040
第8个cpu运行线程时,那么掩码就是0x00000080
第5个和第7个cpu运行线程时,那么掩码就是0x00000050
第7个和第8个cpu运行线程时,那么掩码就是0x000000C0
第2个和第7个和第8个cpu运行线程时,那么掩码就是0x000000C2
第2个和第4个和第7个和第8个cpu运行线程时,那么掩码就是0x000000CA
以此类推
上一篇: Linux网络编程 之 IO多路复用poll(九)
下一篇: linux epoll监听套接字实例
推荐阅读
-
完美解决PHP中的Cannot modify header information 问题_PHP教程
-
解决php中Cannot send session cache limiter 的有关问题
-
由 php 中 if 想到的些问题
-
解决Mysql 8.0.17 winx64版本安装过程中遇到的问题
-
内蒙古自治区*管理局 深入探讨PHP中的内存管理问题
-
浅谈Docker-compose中的depends_on顺序的问题解决
-
PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么? - 红藕香残
-
javascript - php 微信开发中图片长传的问题?
-
关于mysql api中my_bool的取值范围的问题_MySQL
-
项目进行中的小问题-0427