std::jthread:: join
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Observers | ||||
| Operations | ||||
|
jthread::join
|
||||
| Stop token handling | ||||
| Non-member functions | ||||
|
void
join
(
)
;
|
(C++20以降) | |
現在のスレッドを、 * this によって識別されるスレッドの実行が完了するまでブロックします。
*
this
によって識別されるスレッドの完了は、
synchronizes with
join()
からの対応する正常な返り値と同期します。
* this 自体に対して同期は行われません。同じjthreadオブジェクトに対して複数のスレッドから同時に join ( ) を呼び出すことは、未定義動作を引き起こすデータ競合となります。
目次 |
パラメータ
(なし)
戻り値
(なし)
事後条件
joinable() は false です。
例外
std::system_error エラーが発生した場合。
エラー条件
- resource_deadlock_would_occur (デッドロックが検出された場合)、 this - > get_id ( ) == std:: this_thread :: get_id ( ) の場合。
- no_such_process スレッドが有効でない場合。
- invalid_argument joinable() が false の場合。
例
#include <chrono> #include <iostream> #include <thread> void foo() { // 高負荷な操作をシミュレート std::this_thread::sleep_for(std::chrono::seconds(1)); } void bar() { // 高負荷な操作をシミュレート std::this_thread::sleep_for(std::chrono::seconds(1)); } int main() { std::cout << "最初のヘルパーを開始...\n"; std::jthread helper1(foo); std::cout << "2番目のヘルパーを開始...\n"; std::jthread helper2(bar); std::cout << "ヘルパーの完了を待機中..." << std::endl; helper1.join(); helper2.join(); std::cout << "完了!\n"; }
出力:
starting first helper... starting second helper... waiting for helpers to finish... done!
参考文献
- C++23標準 (ISO/IEC 14882:2024):
-
- 33.4.4.3 メンバー [thread.jthread.mem]
- C++20標準 (ISO/IEC 14882:2020):
-
- 32.4.3.2 メンバー関数 [thread.jthread.mem]
関連項目
|
スレッドがスレッドハンドルから独立して実行されることを許可する
(public member function) |
|
|
スレッドが結合可能かどうか、すなわち並列コンテキストで実行されている可能性があるかをチェックする
(public member function) |
|
|
C documentation
for
thrd_join
|
|