我在玩,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 实现依赖于 pthreads,因此有可能让它通过,但我一定是错的。
有什么建议吗?谢谢你。