以编程方式确定机器核心的数量
在各种场景中,确定机器拥有的核心数量变得至关重要。此信息有助于优化资源分配和了解系统功能。有多种方法可以确定这一关键指标。
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中文网其他相关文章!