是否有可能获得主线程的线程对象,以及`join()`?

时间:2015-01-05 15:15:25

标签: c++ multithreading c++11

有没有办法像使用C ++ 11(或更高版本)工具的任何其他线程一样处理主线程? 具体来说,我正在寻找具有主线程join()的能力。所以,基本上,我想做一些事情:main_thread.join(),但不知道如何获取main_thread对象。

线程构造函数似乎不提供任何基于例如使用get_id()获得的线程ID的工具。 this_thread命名空间也只提供最少的功能,但是错过了join(),这正是我要找的。

1 个答案:

答案 0 :(得分:3)

正如@molbdnilo和@yohjb的评论中所指出的那样(参见What happens to a detached thread when main() exits?),C ++ 11语义表明当main()函数终止时所有线程都会结束。 由于C ++ 11没有等效的pthread_exit(),因此主线程无法连接,因为程序无论如何都会结束。

所以,为了回答我的问题,它似乎不可能,并且使用main()的终止语义,它将不会非常有用。