私は で遊んでいてstd::thread
、新しい のスレッド ID を取得する方法を知りたいと思っていましたstd::thread()
。話していないstd::thread::id
のは、スレッドに与えられた OS ID です ( を使用して表示できますpstree
)。これは私の知る限りのものであり、Linux プラットフォームのみを対象としています (移植可能である必要はありません)。
次のように、スレッド内で Linux スレッド ID を取得できます。
#include <iostream>
#include <thread>
#include <unistd.h>
#include <sys/syscall.h>
#include <sys/types.h>
void SayHello()
{
std::cout << "Hello ! my id is " << (long int)syscall(SYS_gettid) << std::endl;
}
int main (int argc, char *argv[])
{
std::thread t1(&SayHello);
t1.join();
return 0;
}
しかし、メイン ループ内で同じ ID を取得するにはどうすればよいでしょうか。を使用する方法が見つかりませんでした std::thread::native_handle
。pid_t gettid(void);
C++11 の実装は pthread に依存しているため、問題を解決できると信じていましたが、それは間違っているに違いありません。
アドバイスはありますか?ありがとうございました。