Ich habe mir den Quellcode angesehen und es stellte sich heraus, dass die Erkennung der Anzahl der Threads nur für MacOS X und QNX implementiert ist, aber nicht für Linux oder andere Plattformen. Also habe ich fehlende Funktionalität selbst implementiert, indem ich die Anzahl der Einträge in /proc/self/task
gezählt habe. Da es für andere nützlich sein könnte ich es hier bin Entsendung (Ich habe schickte es auch auf die Google Test group):
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;
}
Wie vom 25. August 2015 Google-Test implements GetThreadCount
on Linux:
size_t GetThreadCount() {
const string filename =
(Message() << "/proc/" << getpid() << "/stat").GetString();
return ReadProcFileField<int>(filename, 19);
}
Man könnte denken, dass die cleveren Leute von Google wissen würden, wie man das macht, wenn es einfach ist? ;) –
@MatsPetersson: Nun, manchmal gibt es zu viele einfache Dinge zu tun. – vitaut