Thread-Klassen:
- Klasse
std::thread - Namensraum
std::this_thread
Methoden:
- Methoden
joinunddetach - Methode
get_id - Methode
sleep_for
SimpleThreading_01.cpp: std::thread Basics
SimpleThreading_02.cpp: "4 Ways to create a Thread"
SimpleThreading_03.cpp: std::thread und std::move
Es werden an einfachen Beispielen Grundlagen des C++–Multithreadings betrachtet.
Ferner wird auf die 4 verschiedenen Möglichkeiten eingegangen, einen Thread zu erzeugen:
- Thread mit Funktionszeiger.
- Thread mit aufrufbarem Objekt.
- Thread mit Lambda-Objekt.
- Thread mit einer Methode eines Objekts.
- Ein Objekt der Klasse
std::threadkann mit einem Callable und seinen Parametern instanziiert werden und beginnt sofort mit der Ausführung. - Danach befindet sich das Objekt im sogenannten joinable Zustand, d.h. es muss ge-joined oder ge-detached werden, bevor es den Gültigkeitsbereich verlässt.
- Wird das Objekt zu irgendeinem Zeitpunkt ge-joined (Aufruf von
join), wartet der erzeugende Thread an dieser Stelle darauf, dass der erzeugte Thread seine Aufgabe abschließt, also die ihm zugeordnete Funktion (callable) bis zum Ende ausführt (Blockade). - Wird das Objekt ge-detached (Aufruf von
detach), läuft der Thread im Hintergrund weiter und der erzeugende Thread wartet nicht auf sein Ende.
Der kritische Teil dieser Beobachtungen besteht darin,
wenn das Objekt den Gültigkeitsbereich verlässt und zerstört wird.
Zu diesem Zeitpunkt darf es nicht im Zustand joinable sein,
andernfalls erfolgt ein Aufruf von std::terminate()!