gpt4 book ai didi

c++ - 使用 SetThreadAffinityMask() 动态选择要运行的线程

转载 作者:行者123 更新时间:2023-11-28 00:42:56 25 4
gpt4 key购买 nike

我正在编写一个基准测试程序,我想要的是在不同的内核上一个接一个地运行一个线程。因此,例如它将仅在核心 0 上运行工作,然后在核心 0,1 上运行,然后在核心 0,1,2,3 上运行,然后在 0,1,2,3,4,5,6,7 上运行(如果该机器有 8 个核心)。我对需要传递给 SetThreadAffinityMask() 的第二个参数感到困惑。

我似乎可以传递十进制数或十六进制数。在十六进制中,我可以通过:

0x0001 for core 0,
0x0003 for cores 0,1,
0x000F for cores 0,1,2,3

但我正在努力研究如何动态创建这些值。本质上,对于任何给定数量的核心,我都需要能够获取十六进制值,以将亲和性设置为不超过该数量的所有核心。任何关于从哪里开始的帮助都会很棒。

最佳答案

“直到(但不包括)N 个内核”需要掩码值 2N - 1,因此:

(static_cast<DWORD_PTR>(1) << N) - 1;

关于c++ - 使用 SetThreadAffinityMask() 动态选择要运行的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17882591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com