名前空間
変種
操作

std::thread::join

提供: cppreference.com
< cpp‎ | thread‎ | thread
 
 
スレッドサポートライブラリ
スレッド
(C++11)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
相互排他
(C++11)
汎用ロック管理
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
条件変数
(C++11)
フューチャー
(C++11)
(C++11)
(C++11)
(C++11)
 
 
void join();
(C++11およびそれ以降)

*this によって表されるスレッドがその実行を終了するまで、現在のスレッドをブロックします。

*this によって表されるスレッドの完了は、対応する join() からの成功した戻りに対して同期します。

*this 自身は同期されません。 複数のスレッドからの同じ std::thread オブジェクトに対する join() の並行的な呼び出しは、未定義動作の結果となるデータ競合を構成します。

目次

[編集] 引数

(なし)

[編集] 戻り値

(なし)

[編集] 事後条件

joinable()false になります。

[編集] 例外

エラーが発生した場合、 std::system_error

[編集] エラーコンディション

[編集]

#include <iostream>
#include <thread>
#include <chrono>
 
void foo()
{
    // simulate expensive operation
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
 
void bar()
{
    // simulate expensive operation
    std::this_thread::sleep_for(std::chrono::seconds(1));
}
 
int main()
{
    std::cout << "starting first helper...\n";
    std::thread helper1(foo);
 
    std::cout << "starting second helper...\n";
    std::thread helper2(bar);
 
    std::cout << "waiting for helpers to finish..." << std::endl;
    helper1.join();
    helper2.join();
 
    std::cout << "done!\n";
}

出力:

starting first helper...
starting second helper...
waiting for helpers to finish...
done!

[編集] 参考文献

  • C++11 standard (ISO/IEC 14882:2011):
  • 30.3.1.5 thread members [thread.thread.member]

[編集] 関連項目

スレッドをスレッドオブジェクトから独立して実行できるようにします
(パブリックメンバ関数) [edit]
スレッドが join 可能かどうか調べます
(パブリックメンバ関数) [edit]