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

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

本文关键字:编译 内核 C++      更新时间:2023-10-16

有没有办法确定目标机器在 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替换为查询目标计算机上处理器数的内容。详细信息取决于在生成期间对目标计算机的访问形式。