Namespaces
Variants

std::stop_source:: request_stop

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
bool request_stop ( ) noexcept ;
(desde C++20)

Emite una solicitud de parada al estado de parada, si el stop_source objeto tiene un estado de parada y aún no se ha solicitado la parada.

La determinación se realiza de manera atómica, y si se solicitó la detención, el estado de parada se actualiza atómicamente para evitar condiciones de carrera, de modo que:

  • stop_requested ( ) y stop_possible ( ) pueden ser invocados concurrentemente en otros stop_token s y stop_source s del mismo estado de parada;
  • request_stop ( ) puede ser invocado concurrentemente en otros objetos stop_source , y solo uno realizará realmente la solicitud de parada.

Sin embargo, consulte la sección de Notas.

Contenidos

Parámetros

(ninguno)

Valor de retorno

true si el objeto stop_source tiene un estado de parada y esta invocación realizó una solicitud de parada, de lo contrario false .

Postcondiciones

stop_possible ( ) es false o stop_requested ( ) es true .

Notas

Si el request_stop ( ) emite una solicitud de parada (es decir, devuelve true ), entonces cualquier stop_callback registrado para el mismo estado de parada asociado será invocado sincrónicamente, en el mismo hilo request_stop ( ) en el que se emite. Si una invocación de un callback finaliza mediante una excepción, std::terminate es llamado.

Si el objeto stop_source tiene un estado de parada pero ya se ha realizado una solicitud de parada, esta función retorna false . Sin embargo, no hay garantía de que otro objeto stop_source que acaba de solicitar (exitosamente) la parada no esté todavía en medio de la invocación de una función stop_callback .

Si la request_stop ( ) emite una solicitud de parada (es decir, retorna true ), entonces todas las variables de condición de tipo base std::condition_variable_any registradas con una espera interrumpible para stop_token s asociados con el estado de parada del stop_source serán notificadas.

Ejemplo