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