我查看了源代码,结果发现线程数的检测仅适用于 MacOS X 和 QNX,而不适用于 Linux 或其他平台。所以我通过计算/proc/self/task
. 由于它可能对其他人有用,我将其发布在这里(我也将其发送到Google 测试组):
size_t GetThreadCount() {
size_t thread_count = 0;
if (DIR *dir = opendir("/proc/self/task")) {
while (dirent *entry = readdir(dir)) {
if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0)
++thread_count;
}
closedir(dir);
}
return thread_count;
}
截至 2015 年 8 月 25 日,Google Test在 Linux 上实现GetThreadCount
:
size_t GetThreadCount() {
const string filename =
(Message() << "/proc/" << getpid() << "/stat").GetString();
return ReadProcFileField<int>(filename, 19);
}