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
Definido en el encabezado <stop_token>
class stop_token ;
(desde C++20)

La clase stop_token proporciona los medios para verificar si se ha realizado o se puede realizar una solicitud de parada, para su objeto std::stop_source asociado. Esencialmente es una "vista" segura para hilos del estado de parada asociado.

El stop_token también puede pasarse al constructor de std::stop_callback , de modo que la devolución de llamada se invocará si la stop_token 's asociada std::stop_source es solicitada para detenerse. Y stop_token puede pasarse a las funciones de espera interrumpibles de std::condition_variable_any , para interrumpir la espera de la variable de condición si se solicita la detención.

Contenidos

Plantillas de alias de miembro

Tipo Definición
callback_type < Callback > (desde C++26) std:: stop_callback < Callback >

Funciones miembro

construye un nuevo objeto stop_token
(función miembro pública)
destruye el objeto stop_token
(función miembro pública)
asigna el objeto stop_token
(función miembro pública)
Modificadores
intercambia dos objetos stop_token
(función miembro pública)
Observadores
verifica si se ha solicitado detener el estado de parada asociado
(función miembro pública)
verifica si se puede solicitar detener el estado de parada asociado
(función miembro pública)

Funciones no miembro

(C++20)
compara dos objetos std::stop_token
(función)
especializa el algoritmo std::swap
(función)

Notas

Un objeto stop_token generalmente no se construye de forma independiente, sino que se obtiene de un std::jthread o un std::stop_source . Esto hace que comparta el mismo estado de parada asociado que el std::jthread o el std::stop_source .

Macro de prueba de características Valor Std Característica
__cpp_lib_jthread 201911L (C++20) Token de parada y hilo de unión

Ejemplo

#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); // imprime 5 6 7 8... durante aproximadamente 3 segundos
    std::this_thread::sleep_for(3s);
    // El destructor de jthread llama a request_stop() y join().
}

Salida posible:

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