GetSystemInfo(在Windows上)总是返回逻辑处理器的数量吗?

阅读这篇文章,特别是阅读微软文档,看起来应该是返回PHYSICAL处理器的数量,并且你应该使用GetLogicalProcessorInformation来计算出你有多less个LOGICAL处理器。

这里是我在SYSTEM_INFO结构上find的文档: 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结构)报告了LOGICAL处理器的数量。

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

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

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

Solutions Collecting From Web of "GetSystemInfo(在Windows上)总是返回逻辑处理器的数量吗?"

读取它,听起来像是在Service Pack 3之前的Xp,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