2010-04-02 71 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