std:: jthread
|
Definiert im Header
<thread>
|
||
|
class
jthread
;
|
(seit C++20) | |
Die Klasse
jthread
repräsentiert
einen einzelnen Ausführungsstrang
. Sie weist dasselbe allgemeine Verhalten auf wie
std::thread
, mit der Ausnahme, dass
jthread
bei der Zerstörung automatisch wieder beitritt und in bestimmten Situationen abgebrochen/gestoppt werden kann.
Threads beginnen die Ausführung unmittelbar nach der Konstruktion des zugehörigen Thread-Objekts (vorbehaltlich eventueller Betriebssystem-Scheduling-Verzögerungen), beginnend mit der Top-Level-Funktion, die als Konstruktorargument bereitgestellt wird. Der Rückgabewert der Top-Level-Funktion wird ignoriert, und falls sie durch Werfen einer Exception terminiert, wird std::terminate aufgerufen. Die Top-Level-Funktion kann ihren Rückgabewert oder eine Exception an den Aufrufer über std::promise oder durch Modifizieren gemeinsamer Variablen kommunizieren (was Synchronisation erfordern kann, siehe std::mutex und std::atomic ).
Im Gegensatz zu
std::thread
besitzt der
jthread
logisch ein internes privates Mitglied vom Typ
std::stop_source
, das einen gemeinsamen Stopp-Zustand verwaltet. Der
jthread
-Konstruktor akzeptiert eine Funktion, die ein
std::stop_token
als erstes Argument erwartet, das vom
jthread
aus seiner internen
std::stop_source
übergeben wird. Dies ermöglicht der Funktion zu prüfen, ob während ihrer Ausführung ein Stopp angefordert wurde, und gegebenenfalls zurückzukehren.
std::jthread
Objekte können sich auch im Zustand befinden, der keinen Thread repräsentiert (nach Default-Konstruktion, Move-Operation,
detach
, oder
join
), und ein Ausführungsthread kann keinem
jthread
Objekt zugeordnet sein (nach
detach
).
Keine zwei
std::jthread
Objekte dürfen denselben Ausführungsstrang repräsentieren;
std::jthread
ist nicht
CopyConstructible
oder
CopyAssignable
, obwohl es
MoveConstructible
und
MoveAssignable
ist.
Inhaltsverzeichnis |
Mitgliedertypen
| Mitgliedertyp | Definition |
id
|
std::thread::id |
native_handle_type
(
optional*
)
|
std::thread::native_handle_type |
Memberfunktionen
konstruiert neues
jthread
Objekt
(öffentliche Member-Funktion) |
|
|
falls der Thread joinable ist, wird ein Stop angefordert und der Thread gejoint
(öffentliche Member-Funktion) |
|
verschiebt das
jthread
Objekt
(öffentliche Member-Funktion) |
|
Observer |
|
|
prüft ob der Thread joinable ist, d.h. potentiell in parallelem Kontext läuft
(öffentliche Member-Funktion) |
|
|
gibt die
id
des Threads zurück
(öffentliche Member-Funktion) |
|
|
gibt das zugrundeliegende implementierungsdefinierte Thread-Handle zurück
(öffentliche Member-Funktion) |
|
|
[static]
|
gibt die Anzahl der von der Implementierung unterstützten nebenläufigen Threads zurück
(öffentliche statische Member-Funktion) |
Operationen |
|
|
wartet auf das Beenden der Thread-Ausführung
(öffentliche Member-Funktion) |
|
|
erlaubt dem Thread die unabhängige Ausführung vom Thread-Handle
(öffentliche Member-Funktion) |
|
|
tauscht zwei jthread Objekte
(öffentliche Member-Funktion) |
|
Stop-Token-Behandlung |
|
gibt ein
stop_source
Objekt zurück, das mit dem gemeinsamen Stop-Zustand des Threads assoziiert ist
(öffentliche Member-Funktion) |
|
gibt ein
stop_token
zurück, das mit dem gemeinsamen Stop-Zustand des Threads assoziiert ist
(öffentliche Member-Funktion) |
|
|
fordert Ausführungsstop über den gemeinsamen Stop-Zustand des Threads an
(öffentliche Member-Funktion) |
|
Nicht-Member-Funktionen
|
(C++20)
|
spezialisiert den
std::swap
Algorithmus
(Funktion) |
Hinweise
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_jthread
|
201911L
|
(C++20) | Stop-Token und Joining-Thread |
Siehe auch
|
(C++11)
|
verwaltet einen separaten Thread
(Klasse) |