2010-04-02 60 views
5

阅读这篇文章,特别是阅读Microsoft文档,它看起来应该返回PHYSICAL处理器的数量,并且您应该使用GetLogicalProcessorInformation来计算出您有多少个LOGICAL处理器。GetSystemInfo(在Windows上)总是返回逻辑处理器的数量?

这是我在SYSTEM_INFO结构中发现的文档:http://msdn.microsoft.com/en-us/library/ms724958(v=VS.85).aspx 下面是对GetLogicalProcessorInformation的DOC:(空格添加通过垃圾邮件过滤器来获得) http:// msdn.microsoft.com/ en-us/ library/ ms683194.aspx

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

当我再次搜索,我发现,MS没有发布这方面的一些信息(和热修复),这里(空格添加通过垃圾邮件过滤器来获得): http:// support. microsoft.com/ kb/936235

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

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

+1

获取垃圾邮件过滤器? SO从何时开始有垃圾邮件过滤器? – jalf 2010-04-02 12:19:32

回答

4

读取它,它听起来像在XP之前的Service Pack 3中,GetSystemInfo报告SYSTEM_INFO结构中LOGICAL处理器的数量。它还告诉我,在Windows Vista和Windows 7上,GetSystemInfo应报告PHYSICAL处理器的数量(与Windows XP 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 apis)。发布SP3当然可以拨打GetLogicalProcessorInformation