5

阅读此内容,特别是阅读 Microsoft 文档,看起来它应该返回物理处理器的数量,并且您应该使用 GetLogicalProcessorInformation 来确定您拥有多少逻辑处理器。

这是我在 SYSTEM_INFO 结构中找到的文档:http: //msdn.microsoft.com/en-us/library/ms724958 (v=VS.85).aspx 这是关于 GetLogicalProcessorInformation 的文档:(添加空格以通过垃圾邮件过滤器) http://msdn.microsoft.com/en-us/library/ms683194.aspx

不过,进一步阅读它,在我发现的关于这个主题的大多数讨论中,开发人员说 GetSystemInfo(和 SYSTEM_INFO 结构)报告逻辑处理器的数量。

当我再次搜索时,我发现 MS 确实发布了一些关于此的信息(和一个热修复),这里(添加空格以通过垃圾邮件过滤器): http://support。microsoft.com/kb/936235

读起来,听起来像是在 Xp,pre-service Pack 3 上,GetSystemInfo 报告 SYSTEM_INFO 结构中的 LOGICAL 处理器的数量。它还告诉我,在 Windows Vista 和 Windows 7 上,GetSystemInfo 应该报告物理处理器的数量(不同于 Windows XP pre-service Pack 3)。

有谁知道它实际上是做什么的?GetSystemInfo 是否真的以不同的方式报告物理处理器的数量(在同一台计算机上),这取决于它运行在哪个操作系统上?

4

1 回答 1

4

读起来,听起来像是在 Xp,pre-service Pack 3 上,GetSystemInfo 报告 SYSTEM_INFO 结构中的 LOGICAL 处理器的数量。它还告诉我,在 Windows Vista 和 Windows 7 上,GetSystemInfo 应该报告物理处理器的数量(不同于 Windows XP pre-service Pack 3)。

那是对的。Windows XP pre 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. 如果你想获得物理处理器,那么你想要的 pre SP3 是不可能的(编辑:至少使用 win32 apis)。Post SP3 当然可以调用GetLogicalProcessorInformation

于 2010-04-02T13:02:04.213 回答