2016-08-23 96 views
0

32位應用程序是使用C++開發的,運行於具有4個或更多內核的多臺機器上。我正在分析應用程序的核心/處理器消耗。我想問,32位應用程序可以使用多個Core?如果是的話,有什麼方法可以檢查嗎?32位應用程序是否消耗多個內核/處理器

+1

32位應用程序不可能使用比64位應用程序更少或更多的內核。如果您不知道,請使用調試器,調試器的「線程」窗口是相關的。從技術上講,你只能真正看到有多少內核被有效地用於[併發分析器](https://msdn.microsoft.com/en-us/library/dd537632.aspx),因爲不能保證多個線程可以同時使用多個核心。線程有一個互相鎖定的習慣以保持代碼線程安全。任務管理器往往很簡單。 –

+0

感謝漢斯。將嘗試使用併發分析器。非常感謝。 – Vivek

+0

@HansPassant可以請您再確認一件事。我們對64位進程沒有任何限制,對吧?這可以同時使用所有可用的CPU。 – Vivek

回答

2

32/64位是應用程序用於尋址其虛擬內存的位數。應用程序使用多少個核心完全獨立於該數字。

通常,任何應用程序將使用盡可能多的可用內核,因爲它具有活動線程(正如Hans Passant指出的那樣,某些線程可能會阻塞等待其他線程,IO或類似內容,在這種情況下,它們將不會被調度對於任何內核)。

一個簡單的檢查就是在任務管理器中查看進程的CPU使用情況:如果進程使用的CPU數小於100%/number_of_cores,那麼它實際上是單線程的。如果它利用更多,則意味着它運行在多個核心上。你的目標應該是通過正確使用多線程技術來使其可用CPU的100%(再次,這與32/64位問題無關)。

相關問題