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

时间:2017-07-12 03:09:17

标签: c++ c gcc compile-time

有没有办法确定目标机器在GCC下的C / C ++编译时有多少个物理内核?

我知道其他方法,例如C ++ 11中的td::thread::hardware_concurrency()sysconf(_SC_NPROCESSORS_ONLN),但我很想知道在编译时是否真的有办法获取这些信息。

1 个答案:

答案 0 :(得分:6)

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

示例

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

其中main.cpp

#include <iostream>
int main() {
    std::cout << PROC_COUNT << std::endl;
    return 0;
}

修改

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