2015-01-05 11 views
5

メインスレッドを他のスレッドと同様にC++ 11(またはそれ以降)の機能で扱う方法はありますか? 具体的には、私が探しているのは、join()のメインスレッドの機能です。だから、基本的には、私はmain_thread.join()のような何かをしたいと思いますが、main_threadオブジェクトの入手方法はわかりません。メインスレッドのスレッドオブジェクトを取得することは可能ですか?それと `join()`はできますか?

スレッドコンストラクタは、たとえばget_id()で取得したスレッドIDに基づいて機能を提供していないようです。 this_threadネームスペースも最小限の機能しか提供していませんが、私が探しているものはjoin()のようなものです。

+0

通常、メインスレッドからスレッドを開始し、開始したスレッドをjoin()します。それ以外の方法はありません。 – KoKuToru

+0

[std :: thread :: join](http://en.cppreference.com/w/cpp/thread/thread/join)メソッドはC++用です11.Whatsの問題? – Ankur

+0

あなたがメインスレッドに参加したいのであれば、ちょうど現在のスレッドを終了するだけの違いは何ですか?あなたがこれからも続けようとしているようなものではありません。メインスレッドが終了するとプログラムは終了します。 – Wintermute

答えて

3

@molbdniloと@yohjb(What happens to a detached thread when main() exits?も参照)のコメントで指摘されているように、C++ 11のセマンティクスでは、main()関数が終了するとすべてのスレッドが終了すると言われています。 C++ 11にはpthread_exit()がないため、プログラムが終了するため、メインスレッドを結合することはできません。

私の質問に答えるには、それは可能ではないようで、終了セマンティクスがmain()の場合、あまり役に立ちません。

+0

FYIこれはコミュニティのwikiである必要はありませんでした。それは完全に合理的な質問と答えです。 –

関連する問題