std::stop_callback<Callback>:: ~stop_callback
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
stop_callback::~stop_callback
|
||||
| Deduction guides |
|
~stop_callback
(
)
;
|
(depuis C++20) | |
Détruit l'objet
stop_callback
.
Si
*
this
possède un
stop_token
avec un état d'arrêt associé, désenregistre le rappel de celui-ci.
Si la fonction de rappel est invoquée simultanément sur un autre thread, le destructeur ne se termine pas tant que l'invocation de la fonction de rappel n'est pas terminée. Si la fonction de rappel est invoquée sur le même thread que celui sur lequel le destructeur est invoqué, alors le destructeur retourne sans attendre que l'invocation du rappel soit terminée (voir Notes).
Notes
Le destructeur de
stop_callback
est conçu pour prévenir les conditions de course et les interblocages. Si un autre thread invoque actuellement le rappel, alors le destructeur ne peut pas retourner tant que cela n'est pas terminé, sinon l'objet fonction pourrait potentiellement être détruit pendant son exécution. La fonction de rappel n'a pas besoin d'être ni copiable ni déplaçable - elle réside dans l'objet
stop_callback
lui-même même après l'enregistrement.
D'autre part, si le thread actuel invoquant le destructeur est le même thread qui invoque le callback, alors le destructeur ne peut pas attendre, sinon un interblocage se produirait. Il est possible et valide que le même thread détruise le
stop_callback
pendant qu'il invoque sa fonction de callback, car la fonction de callback pourrait elle-même détruire le
stop_callback
, directement ou indirectement.