在C / C ++中确定编译时的内核数

Determine the number of cores at compile time in C/C++

有没有一种方法可以确定在GCC中Linux下C/C++中目标机在编译时有多少物理内核?

我知道在C++ 11或EDCOX1 1中有其他方法,比如EDCOX1 0,但是我很想知道在编译时是否有一种方法来获取这些信息。


您可以在构建过程中查询信息,并将其作为预处理器定义传递到程序中。

例子

g++ main.cpp -D PROC_COUNT=$(grep -c ^processor /proc/cpuinfo)

其中main.cpp

1
2
3
4
5
#include <iostream>
int main() {
    std::cout << PROC_COUNT << std::endl;
    return 0;
}

编辑

正如评论中指出的。如果目标机器与构建机器不同,那么您需要用查询目标机器上处理器数量的东西替换方法grep -c ^processor /proc/cpuinfo。详细信息将取决于您在构建期间对目标计算机的访问方式。