Namespaces
Variants

std::stop_callback<Callback>:: ~stop_callback

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
~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.