std::jthread::join
Von cppreference.com
| void join(); |
(seit C++20) | |
Blockiert den aktuellen Thread, bis der durch *this identifizierte Thread seine Ausführung beendet.
Die Beendigung des durch *this identifizierten Threads synchronisiert mit der entsprechenden erfolgreichen Rückkehr von join().
Keine Synchronisation wird auf *this selbst durchgeführt. Gleichzeitiges Aufrufen von join() für dasselbe jthread-Objekt von mehreren Threads aus stellt ein Datenrennen dar, das zu undefiniertem Verhalten führt.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Nachbedingungen
joinable() ist false.
[bearbeiten] Ausnahmen
std::system_error, wenn ein Fehler auftritt.
[bearbeiten] Fehlerbedingungen
- resource_deadlock_would_occur, wenn this->get_id() == std::this_thread::get_id() (Deadlock erkannt).
- no_such_process, wenn der Thread ungültig ist.
- invalid_argument, wenn joinable() false ist.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <chrono> #include <iostream> #include <thread> 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::jthread helper1(foo); std::cout << "starting second helper...\n"; std::jthread helper2(bar); std::cout << "waiting for helpers to finish..." << std::endl; helper1.join(); helper2.join(); std::cout << "done!\n"; }
Ausgabe
starting first helper... starting second helper... waiting for helpers to finish... done!
[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
| erlaubt dem Thread, unabhängig vom Thread-Handle ausgeführt zu werden (öffentliche Mitgliedsfunktion) | |
| prüft, ob der Thread joinable ist, d.h. ob er potenziell in einem parallelen Kontext läuft (öffentliche Mitgliedsfunktion) | |
| C-Dokumentation für thrd_join
| |