std:: stop_token
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
Definiert im Header
<stop_token>
|
||
|
class
stop_token
;
|
(seit C++20) | |
Die
stop_token
-Klasse bietet die Möglichkeit zu prüfen, ob eine Stoppanforderung gestellt wurde oder gestellt werden kann, für ihr assoziiertes
std::stop_source
-Objekt. Sie ist im Wesentlichen eine threadsichere "Ansicht" des assoziierten Stoppzustands.
Der
stop_token
kann auch an den Konstruktor von
std::stop_callback
übergeben werden, sodass der Callback aufgerufen wird, wenn der zugehörige
stop_token
's assoziierte
std::stop_source
zum Stoppen aufgefordert wird. Und
stop_token
kann an die unterbrechbaren Wartefunktionen von
std::condition_variable_any
übergeben werden, um die Warteoperation der Condition Variable zu unterbrechen, wenn Stopp angefordert wird.
Inhaltsverzeichnis |
Member-Alias-Templates
| Typ | Definition |
| callback_type < Callback > (seit C++26) | std:: stop_callback < Callback > |
Memberfunktionen
konstruiert neues
stop_token
Objekt
(public member function) |
|
zerstört das
stop_token
Objekt
(public member function) |
|
weist das
stop_token
Objekt zu
(public member function) |
|
Modifikatoren |
|
tauscht zwei
stop_token
Objekte
(public member function) |
|
Beobachter |
|
|
prüft ob der assoziierte Stop-Zustand eine Stop-Anforderung erhalten hat
(public member function) |
|
|
prüft ob der assoziierte Stop-Zustand eine Stop-Anforderung empfangen kann
(public member function) |
|
Nicht-Member-Funktionen
|
(C++20)
|
vergleicht zwei
std::stop_token
Objekte
(Funktion) |
|
(C++20)
|
spezialisiert den
std::swap
Algorithmus
(Funktion) |
Hinweise
Ein
stop_token
-Objekt wird im Allgemeinen nicht unabhängig konstruiert, sondern von einem
std::jthread
oder einer
std::stop_source
bezogen. Dadurch teilt es sich denselben assoziierten Stop-Zustand wie der
std::jthread
oder die
std::stop_source
.
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_jthread
|
201911L
|
(C++20) | Stop-Token und Joining-Thread |
Beispiel
#include <iostream> #include <thread> using namespace std::literals::chrono_literals; void f(std::stop_token stop_token, int value) { while (!stop_token.stop_requested()) { std::cout << value++ << ' ' << std::flush; std::this_thread::sleep_for(200ms); } std::cout << std::endl; } int main() { std::jthread thread(f, 5); // gibt 5 6 7 8... für ungefähr 3 Sekunden aus std::this_thread::sleep_for(3s); // Der Destruktor von jthread ruft request_stop() und join() auf. }
Mögliche Ausgabe:
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19