独立于平台确定机器核心数量
确定机器上的核心数量对于优化软件性能至关重要。然而,为这项任务找到一个独立于平台的解决方案可能具有挑战性。
C 11 解决方案
幸运的是,C 11 引入了一种与平台无关的方法来识别核心count:
#include <thread> const auto processor_count = std::thread::hardware_concurrency();
此方法返回内核的逻辑数量,由底层硬件和操作报告system.
C 11 之前的解决方案
对于 C 11 之前的 C 版本,没有可移植的方法来确定核心数量。相反,必须使用特定于平台的方法:
Windows
SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); int numCPU = sysinfo.dwNumberOfProcessors;
类 Unix 系统
int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
macOS(之前10.5)
int mib[4]; int numCPU; std::size_t len = sizeof(numCPU); /* set the mib for hw.ncpu */ mib[0] = CTL_HW; mib[1] = HW_AVAILCPU; /* get the number of CPUs from the system */ sysctl(mib, 2, &numCPU, &len, NULL, 0);
Objective-C(macOS 10.5 或更高版本)
NSUInteger a = [[NSProcessInfo processInfo] processorCount];
以上是如何用 C 语言轻松确定机器的核心数量?的详细内容。更多信息请关注PHP中文网其他相关文章!