std::stop_source:: request_stop
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Modifiers | ||||
|
stop_source::request_stop
|
||||
| Observers | ||||
| Non-member functions | ||||
| Helper tags | ||||
|
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_tokens ystop_sources 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
|
Esta sección está incompleta
Razón: sin ejemplo |