C++ 是否可以为主线程获取一个thread对象,并使用它“join()”?

C++ 是否可以为主线程获取一个thread对象,并使用它“join()”?,c++,multithreading,c++11,C++,Multithreading,C++11,有没有一种方法可以像对待其他使用C++11(或更高版本)工具的线程一样对待主线程? 具体地说,我要寻找的是与主线程join()的能力。因此,基本上,我想做一些类似的事情:main\u-thread.join(),但不知道如何获取main\u-thread对象 线程构造函数似乎不提供任何工具,例如基于使用get\u id()获得的线程id。this\u线程名称空间也只提供了最小的功能,但缺少了例如我正在寻找的join()。正如@molbdnilo和@yohjb(另请参见)的评论所指出的,C++11

有没有一种方法可以像对待其他使用C++11(或更高版本)工具的线程一样对待主线程? 具体地说,我要寻找的是与主线程
join()
的能力。因此,基本上,我想做一些类似的事情:
main\u-thread.join()
,但不知道如何获取
main\u-thread
对象


线程构造函数似乎不提供任何工具,例如基于使用
get\u id()
获得的线程id。
this\u线程
名称空间也只提供了最小的功能,但缺少了例如我正在寻找的
join()

正如@molbdnilo和@yohjb(另请参见)的评论所指出的,C++11语义说当
main()
函数终止时,所有线程都会结束。 由于C++11没有与之相当的
pthread_exit()
,因此无法连接主线程,因为程序无论如何都会结束


因此,要回答我的问题,这似乎是不可能的,而且由于
main()
的终止语义,它将不会非常有用。

通常从主线程启动一个线程,然后从启动的线程join()开始。。而不是相反。c++11有什么问题?呃…如果你想加入主线程,和仅仅结束当前线程有什么区别?你不会再继续下去了;当主线程结束时,程序结束。我需要能够执行
main\u thread.join()
。在我的例子中,主线程与其他线程一样,一点也不特别。每个线程都运行任意用户代码,需要能够调用
join()
。当
main
退出时,所有其他线程都将被销毁。根据定义,主线程不是“像任何其他线程一样”。仅供参考,这不需要是社区wiki!这是一个完全合理的问题和答案。