Cam*_*man 3 c c++ gcc compile-time
有没有办法确定目标机器在GCC下的C/C++编译时有多少物理内核?
我知道其他方法,比如td::thread::hardware_concurrency()在C++ 11中,sysconf(_SC_NPROCESSORS_ONLN)但我很想知道在编译时是否真的有办法获取这些信息.
您可以在构建过程中查询信息,并将其作为预处理器定义传递给程序.
例
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;
}
Run Code Online (Sandbox Code Playgroud)
编辑
正如评论中指出的那样.如果目标机器与构建机器不同,那么您将需要grep -c ^processor /proc/cpuinfo用查询目标机器上的处理器数量的方法替换该方法.详细信息取决于您在构建期间对目标计算机的访问形式.