Namensräume
Varianten
Aktionen

std::stop_token

Von cppreference.com
< cpp‎ | thread
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
stop_token
(C++20)
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 <stop_token>
class stop_token;
(seit C++20)

Die Klasse stop_token bietet die Mittel zur Überprüfung, ob eine Stopp-Anforderung für das zugehörige std::stop_source-Objekt gestellt wurde oder gestellt werden kann. Sie ist im Wesentlichen eine threadsichere "Ansicht" des zugehörigen Stop-Zustands.

Das stop_token kann auch an den Konstruktor von std::stop_callback übergeben werden, sodass der Callback aufgerufen wird, wenn für das stop_token das zugehörige std::stop_source zum Stoppen angefordert wird. Und stop_token kann an die unterbrechbaren Wartefunktionen von std::condition_variable_any übergeben werden, um das Warten der Bedingungsvariable zu unterbrechen, wenn ein Stopp angefordert wird.

Inhalt

[bearbeiten] Alias-Templates für Member

Typ Definition
callback_type<Callback> (seit C++26) std::stop_callback<Callback>

[bearbeiten] Memberfunktionen

erstellt ein neues stop_token-Objekt
(public member function) [bearbeiten]
zerstört das stop_token-Objekt
(public member function) [bearbeiten]
weist dem stop_token-Objekt einen Wert zu
(public member function) [bearbeiten]
Modifizierer
tauscht zwei stop_token-Objekte
(public member function) [bearbeiten]
Observer
überprüft, ob der zugehörige Stop-Zustand zum Stoppen angefordert wurde
(public member function) [bearbeiten]
überprüft, ob der zugehörige Stop-Zustand zum Stoppen angefordert werden kann
(public member function) [bearbeiten]

[bearbeiten] Nicht-Member-Funktionen

vergleicht zwei std::stop_token-Objekte
(function) [bearbeiten]
spezialisiert den Algorithmus std::swap
(function) [bearbeiten]

[bearbeiten] Hinweise

Ein stop_token-Objekt wird im Allgemeinen nicht unabhängig erstellt, sondern von einem std::jthread oder std::stop_source abgerufen. Dadurch teilt es denselben zugehörigen Stop-Zustand wie das std::jthread oder std::stop_source.

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

[bearbeiten] 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); // prints 5 6 7 8... for approximately 3 seconds
    std::this_thread::sleep_for(3s);
    // The destructor of jthread calls request_stop() and join().
}

Mögliche Ausgabe

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19