是否有可能为主线程获取一个线程对象,并用它`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() 的终止语义,它不会很有用。