std::jthread::detach
Von cppreference.com
| void detach(); |
(seit C++20) | |
Trennt den Ausführungs-Thread vom jthread-Objekt, wodurch die Ausführung unabhängig fortgesetzt werden kann. Alle allozierten Ressourcen werden freigegeben, sobald der Thread beendet ist.
Nach dem Aufruf von detach besitzt *this keinen Thread mehr.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Nachbedingungen
joinable ist false.
[bearbeiten] Ausnahmen
std::system_error, wenn joinable() = false ist oder ein Fehler auftritt.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <chrono> #include <iostream> #include <thread> void independentThread() { std::cout << "Starting concurrent thread.\n"; std::this_thread::sleep_for(std::chrono::seconds(2)); std::cout << "Exiting concurrent thread.\n"; } void threadCaller() { std::cout << "Starting thread caller.\n"; std::jthread t(independentThread); t.detach(); std::this_thread::sleep_for(std::chrono::seconds(1)); std::cout << "Exiting thread caller.\n"; } int main() { threadCaller(); std::this_thread::sleep_for(std::chrono::seconds(5)); }
Mögliche Ausgabe
Starting thread caller. Starting concurrent thread. Exiting thread caller. Exiting concurrent thread.
[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
| wartet, bis der Thread seine Ausführung beendet hat (ö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_detach
| |