我正在编写一个基准测试程序,我想要的是一个接一个地在不同的内核上运行一个线程。例如,它将仅在核心 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
但我正在努力研究如何动态创建这些值。基本上对于任何给定数量的核心,我需要能够获得十六进制值以将所有核心的亲和力设置为该数量。任何关于从哪里开始的帮助都会很棒。