SetProcessAffinityMask()
函数接受一个DWORD
掩码,因此它不能在超过 32 个处理器的系统上正确使用。
看起来SetThreadGroupAffinity()
是为了以某种方式解决这个问题,但我找不到任何有用的代码示例来说明它的用法?
如何使用SetProcessAffinityMask()
/GetProcessAffinityMask()
来调整我的程序,使其适用于超过 32 个处理器的系统?有代码示例吗?
SetProcessAffinityMask()
函数接受一个DWORD
掩码,因此它不能在超过 32 个处理器的系统上正确使用。
看起来SetThreadGroupAffinity()
是为了以某种方式解决这个问题,但我找不到任何有用的代码示例来说明它的用法?
如何使用SetProcessAffinityMask()
/GetProcessAffinityMask()
来调整我的程序,使其适用于超过 32 个处理器的系统?有代码示例吗?
首先SetProcessAffinityMask()
接受DWORD_PTR
。由于 32 位版本的操作系统不支持 >32 内核,这意味着您正在谈论 64 位操作系统。因此,实际限制为SetProcessAffinityMask()
64。
至于如何处理 >64,我认为具有超过 64 个处理器的支持系统白皮书会告诉您您需要了解的内容。
编辑
您在评论中声明您的代码是在 64 位操作系统上运行的 32 位代码。
据我了解,如果您在 64 位操作系统上的 32 位模拟器中运行,则对非常细粒度的控制的支持有限。假设是,如果您想利用这些新功能,您应该停止使用模拟器。