mhu*_*hes 5 c++ windows winapi hyperthreading
阅读本文,特别是阅读Microsoft文档,它看起来应该返回PHYSICAL处理器的数量,并且您应该使用GetLogicalProcessorInformation来确定您拥有多少LOGICAL处理器.
这是我在SYSTEM_INFO结构上找到的文档:http://msdn.microsoft.com/en-us/library/ms724958 (v = VS.85).aspx这里是关于GetLogicalProcessorInformation的文档:(通过垃圾邮件添加的空格)过滤器) http:// msdn.microsoft.com/ zh-cn/library/ms683194.aspx
尽管如此,在我发现的关于这个主题的大多数讨论中,开发人员都说GetSystemInfo(以及SYSTEM_INFO结构)报告了LOGICAL处理器的数量.
当我再次搜索时,我发现MS确实在此发布了一些信息(以及一个热修复),这里(通过垃圾邮件过滤器添加了空格): http:// support.microsoft.com/ kb/936235
读取它,听起来像在Xp上,预服务包3,GetSystemInfo报告SYSTEM_INFO结构中的LOGICAL处理器的数量.它还告诉我,在Windows Vista和Windows 7上,GetSystemInfo应该报告PHYSICAL处理器的数量(与Windows XP pre-service Pack 3不同).
有谁知道它实际上做了什么?GetSystemInfo是否真的以不同的方式报告物理处理器的数量(在同一台计算机上),具体取决于它运行的操作系统?
读到这里,听起来像是在 Xp、pre-service Pack 3 上,GetSystemInfo 报告 SYSTEM_INFO 结构中逻辑处理器的数量。它还告诉我,在 Windows Vista 和 Windows 7 上,GetSystemInfo 应该报告物理处理器的数量(与 Windows XP pre-service Pack 3 不同)。
那是对的。Windows XP SP2 之前的版本) 不区分逻辑处理器和物理处理器。(毕竟,Windows XP 发布时逻辑处理器还不存在)因此,虽然该函数返回操作系统认为的“物理处理器”,但在 SP2 之前没有任何区别。
不过,我相信为了保持兼容性,XP SP2+ 会继续报告该特定功能的逻辑处理器,因为这是应用程序期望它为 XP 计算机执行的操作。询问“我使用的是 XP 吗?”会更快、更容易。而不是问“我使用的是 XP SP3 吗?”。
为什么 SP2 和 SP3 之间存在差异?尽管 SP2 中处理了物理处理器和逻辑处理器之间的差异,但这一变化仅影响平台 SKU 的计费方式。基本上,XP 系统中最多可以有 32 个逻辑处理器,但 SP2 后最多只能有 2 个物理处理器。在 SP2 之前,您只能使用 2 个逻辑处理器。但是,直到 SP3 发布后,操作系统才在 API 中公开此功能。
长话短说,如果您想获得 SP3 之前的逻辑处理器,只需获得物理处理器即可 - 操作系统不知道有什么区别。发布 SP3,请致电GetLogicalProcessorInformation. 如果您想获得物理处理器,SP3 之前您想要的东西是不可能的(编辑:至少对于 win32 api)。SP3之后当然可以打电话了GetLogicalProcessorInformation。