首頁 >後端開發 >C++ >如何以程式方式確定不同系統中 CPU 核心的數量?

如何以程式方式確定不同系統中 CPU 核心的數量?

Susan Sarandon
Susan Sarandon原創
2024-12-14 18:10:11430瀏覽

How to Programmatically Determine the Number of CPU Cores in Different Systems?

以程式方式決定機器核心的數量

在各種場景中,決定機器擁有的核心數量變得至關重要。此資訊有助於優化資源分配和了解系統功能。有多種方法可以確定這一關鍵指標。

C 11 及以後

C 11 引入了一個用於檢索核心計數的便攜式解決方案:

#include <thread>

// May return 0 if unable to detect.
const auto processor_count = std::thread::hardware_concurrency();

Pre-C 11 和特定於平台的方法

在C 11 之前,採用特定平台的方法:

Windows

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;

Linux、Solaris 、AIX、Mac OS X(老虎開始)

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);

FreeBSD、macOS、NetBSD、 OpenBSD

int mib[4];
int numCPU;
std::size_t len = sizeof(numCPU); 

mib[0] = CTL_HW;
mib[1] = HW_AVAILCPU;

sysctl(mib, 2, &numCPU, &len, NULL, 0);

if (numCPU < 1) 
{
    mib[1] = HW_NCPU;
    sysctl(mib, 2, &numCPU, &len, NULL, 0);
    if (numCPU < 1)
        numCPU = 1;
}

HPUX

int numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);

IRIX

int numCPU = sysconf(_SC_NPROC_ONLN);

目標- C(Mac OS X >= 10.5或iOS)

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];

透過利用這些技術,開發人員可以輕鬆確定其電腦上可用的核心數量,從而實現高效的資源利用和效能最佳化。

以上是如何以程式方式確定不同系統中 CPU 核心的數量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn