分类
C++ OS

C/C++ 获取CPU核心数

有时候我们的多线程程序要确定并发数(线程数), 这时候我们可能比较关心当前环境CPU核心数

Windows

Windows为我们提供了一些API, 比如GetSystemInfo(), 可以获得当前系统的一些信息, 这个函数包含在<windows.h>中, 然后获取其中的dwNumberOfProcessors成员即可

#if defined(_WIN32)
SYSTEM_INFO info;
GetSystemInfo (&info);
return info.dwNumberOfProcessors;

Linux

Linux则更加方便, 直接调用GNU函数get_nprocs()即可

Code

所以代码如下:

int get_cpu_cores()
{
#if defined(_WIN32)
    SYSTEM_INFO info;
    GetSystemInfo (&info);
    return info.dwNumberOfProcessors;
#elif defined(LINUX) || defined(SOLARIS) || defined(AIX)
    return get_nprocs();   //GNU fuction
#else
#error  UNKNOWN OS!
#endif
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注