- Verwendete Werkzeuge
- Allgemeines
- Verhalten der Klassen
std::jthreadundstd::jthreadbzgl. desjoin-Aufrufs
Klassen:
- Klasse
std::thread - Klasse
std::jthread
JThread.cpp: std::jthread-Objekt und join()-Aufruf.
Die Implementierung der std::jthread-Klasse basiert auf der bereits vorhandenen Klasse std::thread.
Die std::jthread-Klasse ist eine Wrapper-Klasse um Klasse std::thread herum,
sie stellt dieselben öffentlichen Methoden bereit, die die Aufrufe einfach weiterleiten.
Es kann folglich jedes std::thread-Objekt in ein std::jthread-Objekt umgewandelt werden,
dieses verhält sich dann genau so, wie sich ein entsprechendes std::thread-Objekt verhalten würde.
Wenn ein std::thread-Objekt den Zustand joinable besitzt
und dieses auf Grund des Verlassens eines Blocks (Gültigkeitsbereichs) aufgeräumt wird,
wird in seinem Destruktor automatisch std::terminate aufgerufen.
Ein std::thread-Objekt besitzt den Zustand joinable,
wenn am Objekt keine der beiden Methoden join() oder detach() aufgerufen wurde.
Ein Objekt der Klasse std::jthread verhält sich hier anders: Der Destruktor des Objekts ruft automatisch join auf,
wenn sich der Thread noch im Zustand joinable befindet.