在 C/C++ 中确定编译时的内核数
Determine the number of cores at compile time in C/C++
有没有办法确定目标机器在 GCC 下的 C/C++ Linux 编译时有多少物理内核?
我知道其他方法,例如 C++11 或sysconf(_SC_NPROCESSORS_ONLN)
中的td::thread::hardware_concurrency()
,但我很好奇是否真的有办法在编译时获取此信息。
您可以在生成过程中查询信息,并将其作为预处理器定义传递到程序中。
例
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
替换为查询目标计算机上处理器数的内容。详细信息取决于在生成期间对目标计算机的访问形式。