Namespaces
Variants

std:: stop_token

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
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)
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