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 ;
(depuis C++20)

Émet une demande d'arrêt vers l'état d'arrêt, si l'objet stop_source possède un état d'arrêt et qu'une demande d'arrêt n'a pas encore été effectuée.

La détermination est effectuée de manière atomique, et si l'arrêt a été demandé, l'état d'arrêt est mis à jour atomiquement pour éviter les conditions de concurrence, de telle sorte que :

  • stop_requested ( ) et stop_possible ( ) peuvent être invoqués simultanément sur d'autres stop_token et stop_source du même état d'arrêt ;
  • request_stop ( ) peut être invoqué simultanément sur d'autres objets stop_source , et un seul effectuera réellement la demande d'arrêt.

Cependant, consultez la section Notes.

Table des matières

Paramètres

(aucun)

Valeur de retour

true si l'objet stop_source possède un état d'arrêt et que cet appel a effectué une demande d'arrêt, sinon false .

Postconditions

stop_possible ( ) est false ou stop_requested ( ) est true .

Notes

Si la request_stop ( ) émet effectivement une demande d'arrêt (c'est-à-dire retourne true ), alors tous les stop_callback enregistrés pour le même état d'arrêt associé seront invoqués de manière synchrone, sur le même thread où request_stop ( ) est émise. Si une invocation d'un callback se termine par une exception, std::terminate est appelée.

Si l'objet stop_source possède un état d'arrêt mais qu'une demande d'arrêt a déjà été effectuée, cette fonction retourne false . Cependant, il n'y a aucune garantie qu'un autre objet stop_source qui vient juste (avec succès) de demander l'arrêt ne soit pas encore en train d'invoquer une fonction stop_callback .

Si la request_stop ( ) émet effectivement une demande d'arrêt (c'est-à-dire, retourne true ), alors toutes les variables de condition de type de base std::condition_variable_any enregistrées avec une attente interruptible pour les stop_token associés à l'état d'arrêt du stop_source seront notifiées.

Exemple