std::jthread::joinable
Von cppreference.com
| bool joinable() const noexcept; |
(seit C++20) | |
Prüft, ob das std::jthread-Objekt einen aktiven Ausführungs-Thread identifiziert. Speziell wird true zurückgegeben, wenn get_id() != std::jthread::id(). Ein mit dem Standardkonstruktor erzeugtes jthread ist also nicht joinable.
Ein Thread, der die Ausführung von Code beendet hat, aber noch nicht gejoint wurde, wird immer noch als aktiver Ausführungs-Thread betrachtet und ist daher joinable.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
true, wenn das std::jthread-Objekt einen aktiven Ausführungs-Thread identifiziert, andernfalls false.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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'; }
Ausgabe
before starting, joinable: false after starting, joinable: true after joining, joinable: false after detaching, joinable: false
[bearbeiten] Referenzen
- C++23 Standard (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]
[bearbeiten] Siehe auch
| gibt die ID des Threads zurück (öffentliche Mitgliedsfunktion) | |
| wartet, bis der Thread seine Ausführung beendet hat (öffentliche Mitgliedsfunktion) | |
| erlaubt dem Thread, unabhängig vom Thread-Handle ausgeführt zu werden (öffentliche Mitgliedsfunktion) |