Namensräume
Varianten
Aktionen

std::jthread

Von cppreference.com
< cpp‎ | thread
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
jthread
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
 
Definiert in Header <thread>
class jthread;
(seit C++20)

Die Klasse jthread repräsentiert einen einzelnen Ausführungsfaden. Sie hat dasselbe allgemeine Verhalten wie std::thread, mit der Ausnahme, dass jthread bei der Zerstörung automatisch beigetreten wird und unter bestimmten Umständen abgebrochen/gestoppt werden kann.

Threads beginnen sofort mit der Ausführung, sobald das zugehörige Thread-Objekt konstruiert wird (vorbehaltlich etwaiger Verzögerungen bei der Betriebssystemplanung), beginnend mit der obersten Funktion, die als Konstruktorargument bereitgestellt wird. Der Rückgabewert der obersten Funktion wird ignoriert und wenn sie durch das Auslösen einer Ausnahme beendet wird, wird std::terminate aufgerufen. Die oberste Funktion kann ihren Rückgabewert oder eine Ausnahme über std::promise an den Aufrufer übermitteln oder durch Modifizieren gemeinsam genutzter Variablen (was Synchronisation erfordern kann, siehe std::mutex und std::atomic).

Im Gegensatz zu std::thread hält jthread logisch ein internes privates Mitglied vom Typ std::stop_source, das einen gemeinsam genutzten Stop-Zustand verwaltet. Der jthread-Konstruktor akzeptiert eine Funktion, die einen std::stop_token als erstes Argument nimmt, welcher von jthread aus seiner internen std::stop_source übergeben wird. Dies ermöglicht der Funktion zu überprüfen, ob während ihrer Ausführung ein Stopp angefordert wurde, und sich gegebenenfalls zurückzugeben.

std::jthread-Objekte können sich auch in einem Zustand befinden, der keinen Thread repräsentiert (nach Default-Konstruktion, Move-Konstruktion, detach oder join), und ein Ausführungsfaden kann mit keinen jthread-Objekten assoziiert sein (nach detach).

Keine zwei std::jthread-Objekte dürfen denselben Ausführungsfaden repräsentieren; std::jthread ist nicht CopyConstructible oder CopyAssignable, obwohl es MoveConstructible und MoveAssignable ist.

Inhalt

[edit] Member-Typen

Mitgliedertyp Definition
id std::thread::id
native_handle_type (optional*) std::thread::native_handle_type[edit]

[edit] Member-Funktionen

konstruiert neues jthread-Objekt
(public member function) [edit]
wenn der Thread joinable ist, wird ein Stopp angefordert und der Thread tritt bei
(public member function) [edit]
verschiebt das jthread-Objekt
(public member function) [edit]
Observer
prüft, ob der Thread joinable ist, d.h. ob er potenziell in einem parallelen Kontext läuft
(öffentliche Mitgliedsfunktion) [bearbeiten]
gibt die ID des Threads zurück
(öffentliche Mitgliedsfunktion) [bearbeiten]
gibt den zugrunde liegenden, implementierungsabhängigen Thread-Handle zurück
(public member function) [edit]
gibt die Anzahl der von der Implementierung unterstützten parallelen Threads zurück
(public static member function) [edit]
Operationen
wartet, bis der Thread seine Ausführung beendet hat
(öffentliche Mitgliedsfunktion) [bearbeiten]
erlaubt dem Thread, unabhängig vom Thread-Handle ausgeführt zu werden
(öffentliche Mitgliedsfunktion) [bearbeiten]
tauscht zwei jthread-Objekte
(öffentliche Mitgliedsfunktion) [bearbeiten]
Stop-Token-Behandlung
gibt ein stop_source-Objekt zurück, das mit dem gemeinsam genutzten Stop-Zustand des Threads assoziiert ist
(public member function) [edit]
gibt ein stop_token zurück, das mit dem gemeinsam genutzten Stop-Zustand des Threads assoziiert ist
(public member function) [edit]
fordert das Ende der Ausführung über den gemeinsam genutzten Stop-Zustand des Threads an
(public member function) [edit]

[edit] Nicht-Member-Funktionen

spezialisiert den Algorithmus std::swap
(Funktion) [bearbeiten]

[edit] Hinweise

Feature-Test-Makro Wert Std Feature
__cpp_lib_jthread 201911L (C++20) Stop-Token und beitretende Threads

[edit] Siehe auch

(C++11)
verwaltet einen separaten Thread
(Klasse) [bearbeiten]