是否有可能为主线程获取一个线程对象,并用它`join()`?
Is it possible to get a thread object for the main thread, and `join()` with it?
有没有办法像使用 C++11(或更高版本)设施的任何其他线程一样处理主线程?
具体来说,我正在寻找的是 join()
与主线程的能力。所以,基本上,我想做类似的事情:main_thread.join()
,但不知道如何获得 main_thread
对象。
线程构造器似乎没有提供任何基于例如使用 get_id()
获得的线程 ID 的功能。 this_thread
命名空间也只提供最少的功能,但缺少 join()
,这正是我正在寻找的。
正如@molbdnilo 和@yohjb 在评论中所指出的(另见What happens to a detached thread when main() exits?),C++11 语义表明当main()
函数终止时所有线程都结束。
由于 C++11 没有 pthread_exit()
等效项,因此无法加入主线程,因为程序无论如何都会结束。
所以,要回答我的问题,这似乎是不可能的,并且使用 main()
的终止语义,它不会很有用。
有没有办法像使用 C++11(或更高版本)设施的任何其他线程一样处理主线程?
具体来说,我正在寻找的是 join()
与主线程的能力。所以,基本上,我想做类似的事情:main_thread.join()
,但不知道如何获得 main_thread
对象。
线程构造器似乎没有提供任何基于例如使用 get_id()
获得的线程 ID 的功能。 this_thread
命名空间也只提供最少的功能,但缺少 join()
,这正是我正在寻找的。
正如@molbdnilo 和@yohjb 在评论中所指出的(另见What happens to a detached thread when main() exits?),C++11 语义表明当main()
函数终止时所有线程都结束。
由于 C++11 没有 pthread_exit()
等效项,因此无法加入主线程,因为程序无论如何都会结束。
所以,要回答我的问题,这似乎是不可能的,并且使用 main()
的终止语义,它不会很有用。