有没有一种方法可以以独立于平台的方式确定一台机器有多少个C/C++内核?如果不存在这样的东西,那么根据平台(Windows/*nix/Mac)来确定它呢
C++11
#包括<;螺纹>;
//无法检测时可能返回0
const auto processor_count=std::thread::hardware_concurrency();
参考:std::thread::hardware\u并发
在C++ 11之前C++没有可移植的方法。相反,您需要使用以下一种或多种方法(由适当的#ifdef行保护):
-
Win32
系统信息系统信息; GetSystemInfo(和sysinfo); int numpu=sysinfo.dwNumberOfProcessors; -
Linux、Solaris、AIX和Mac OS X>=10.4(即Tiger以后的版本)
int numpu=sysconf(仅处理器); -
FreeBSD、MacOS X、NetBSD、OpenBSD等
intmib[4]; int numCPU; 标准:尺寸长度=尺寸(numCPU); /*为hw.ncpu设置mib*/ mib[0]=CTL_HW; mib[1]=HW_AVAILCPU;//或者,试试HW_NCPU; /*从系统中获取CPU的数量*/ sysctl(mib,2,&;numpu,&;len,NULL,0); 如果(numCPU<;1) { mib[1]=HW_NCPU; sysctl(mib,2,&;numpu,&;len,NULL,0); 如果(numCPU<;1) numCPU=1; } -
HPUX
int numpu=mpctl(MPC_getnumpus,NULL,NULL); -
虹彩
int numpu=sysconf(\u SC\u NPROC\u ONLN); -
Objective-C(Mac OS X>=10.5或iOS)
nsu整数a=[[NSProcessInfo processInfo]processorCount]; NSUB整数=[[NSProcessInfo processInfo]activeProcessorCount];