Ответ 1
Я посмотрел исходный код, и оказалось, что обнаружение количества потоков реализовано только для MacOS X и QNX, но не для Linux или других платформ. Поэтому я сам реализовал недостающую функциональность, подсчитав количество записей в /proc/self/task
. Поскольку это может быть полезно для других, я публикую его здесь (я также отправил его в группу Google Test):
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;
}
По состоянию на 25 августа 2015 года Google Test реализует GetThreadCount
в Linux:
size_t GetThreadCount() {
const string filename =
(Message() << "/proc/" << getpid() << "/stat").GetString();
return ReadProcFileField<int>(filename, 19);
}