std::stop_callback<Callback>::~stop_callback
~stop_callback(); | (desde C++20) | |
Destruye el objeto stop_callback
.
Si *this tiene un stop_token
con un estado de detención asociado, cancela el registro de la devolución de llamada de él.
Si la función de devolución de llamada se invoca simultáneamente en otro hilo/subproceso, el destructor no se completa hasta que se complete la invocación de la función de devolución de llamada. Si la función de devolución de llamada se invoca en el mismo hilo/subproceso en el que se invoca el destructor, el destructor regresa sin esperar a que se complete la invocación de devolución de llamada (ver Notas).
[editar]Notas
El destructor de stop_callback
está diseñado para evitar condiciones de carrera y bloqueos. Si otro hilo/subproceso está invocando actualmente la devolución de llamada, entonces el destructor no puede regresar hasta que se complete, o de lo contrario, el objeto función podría potencialmente destruirse mientras se está ejecutando. No es necesario que la función de devolución de llamada no se pueda copiar ni mover; vive en el objeto stop_callback
incluso después de registrarse.
Por otro lado, si el hilo/subproceso actual que invoca al destructor es el mismo hilo que está invocando la devolución de llamada, entonces el destructor no puede esperar o de lo contrario se produciría un bloqueo. Es posible y válido que el mismo hilo destruya el stop_callback
mientras invoca su función de devolución de llamada, porque la función de devolución de llamada podría destruir por sí misma el stop_callback
, directa o indirectamente.