私はソースコードを見て、スレッド数の検出はMacOS XとQNXのみで実装されているが、Linuxや他のプラットフォームでは実装されていないことが判明した。だから私は/proc/self/task
のエントリの数を数えることで自分自身に欠けている機能を実装しました。
2015年8月25日のよう
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;
}
、Googleのテストimplements GetThreadCount
on Linux:それは私がそれをここに掲示しています他の人のために有用であるかもしれないので(私もGoogle Test groupにそれを送信した)
size_t GetThreadCount() {
const string filename =
(Message() << "/proc/" << getpid() << "/stat").GetString();
return ReadProcFileField<int>(filename, 19);
}
Googleの巧妙な人々は、それが簡単ならそれをする方法を知っているだろうと思いますか? ;) –
@MatsPetersson:まあ、時にはやりにくいことが多すぎます。 – vitaut