std::jthread::joinable
From cppreference.com
| bool joinable() const noexcept; |
(C++20以降) | |
std::jthreadオブジェクトがアクティブな実行スレッドを識別するかどうかをチェックします。具体的には、get_id() != std::jthread::id() の場合に true を返します。したがって、デフォルト構築された jthread はjoin可能ではありません。
コードの実行を終了したが、まだjoinされていないスレッドも、アクティブな実行スレッドと見なされるため、join可能です。
目次 |
[編集] パラメータ
(なし)
[編集] 戻り値
std::jthreadオブジェクトがアクティブな実行スレッドを識別する場合は true、そうでない場合は false。
[編集] 例
このコードを実行
#include <chrono> #include <iostream> #include <thread> using namespace std::chrono_literals; void foo() { std::this_thread::sleep_for(500ms); } int main() { std::cout << std::boolalpha; std::jthread t; std::cout << "before starting, joinable: " << t.joinable() << '\n'; t = std::jthread{foo}; std::cout << "after starting, joinable: " << t.joinable() << '\n'; t.join(); std::cout << "after joining, joinable: " << t.joinable() << '\n'; t = std::jthread{foo}; t.detach(); std::cout << "after detaching, joinable: " << t.joinable() << '\n'; }
出力
before starting, joinable: false after starting, joinable: true after joining, joinable: false after detaching, joinable: false
[編集] 参照
- C++23標準 (ISO/IEC 14882:2024)
- 33.4.4.3 Members [thread.jthread.mem]
- C++20 standard (ISO/IEC 14882:2020)
- 32.4.3.2 Members [thread.jthread.mem]
[編集] 関連項目
| スレッドのIDを返す (public member function) | |
| スレッドが実行を完了するまで待機する (public member function) | |
| スレッドがスレッドハンドルから独立して実行を継続できるようにする (public member function) |