偵測具有超執行緒支援的實體處理器/核心的數量
在旨在實現最高效率的多執行緒應用程式中,了解實體處理器或核心的數量至關重要。創建過多的執行緒會影響效能,尤其是在支援超執行緒的場景下。
超執行緒偵測
要準確決定實體處理器的數量,您需要偵測是否支援並啟用超執行緒。具體操作方法如下:
確定實體核心數量
偵測到超執行緒支援後,請依照下列步驟操作確定實體核心數量:
範例實作
以下C 程式示範了超值的偵測執行緒與實體核心的數量:
<code class="cpp">#include <iostream> #include <string> using namespace std; void cpuID(unsigned i, unsigned regs[4]) { #ifdef _WIN32 __cpuid((int *)regs, (int)i); #else asm volatile ("cpuid" : "=a" (regs[0]), "=b" (regs[1]), "=c" (regs[2]), "=d" (regs[3]) : "a" (i), "c" (0)); #endif } int main(int argc, char *argv[]) { unsigned regs[4]; // ... (Code for vendor detection, feature check, and logical core count) // Hyper-Threading detection bool hyperThreads = cpuFeatures & (1 << 28) && cores < logical; // ... (Code for physical core count based on vendor) cout << "hyper-threads: " << (hyperThreads ? "true" : "false") << endl; return 0; }</code>
結論
透過執行以下步驟,您可以在考慮超執行緒的同時準確偵測實體處理器/核心的數量- 執行緒支援。此資訊對於優化多執行緒應用程式的效能非常寶貴。
以上是考慮到超線程的存在,如何準確地確定係統中物理核心的數量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!