Namespaces
Variants

std::atomic_flag:: wait

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
void wait ( bool old, std:: memory_order order =
std:: memory_order_seq_cst ) const noexcept ;
(1) (depuis C++20)
(constexpr depuis C++26)
void wait ( bool old,

std:: memory_order order =

std:: memory_order_seq_cst ) const volatile noexcept ;
(2) (depuis C++20)

Effectue des opérations d'attente atomiques. Se comporte comme s'il effectuait répétitivement les étapes suivantes :

  • Compare this - > test ( order ) avec celui de old .
    • S'ils sont égaux, alors se bloque jusqu'à ce que * this soit notifié par notify_one() ou notify_all() , ou que le thread soit débloqué de manière sporadique.
    • Sinon, retourne.

Ces fonctions garantissent de ne retourner que si la valeur a changé, même si l'implémentation sous-jacente se débloque de manière intempestive.

Si order n'est pas std:: memory_order_relaxed , std:: memory_order_consume , std:: memory_order_acquire ou std:: memory_order_seq_cst , le comportement est indéfini.

Table des matières

Paramètres

old - la valeur à vérifier que l'objet atomic_flag ne contient plus
order - les contraintes d'ordre mémoire à appliquer

Notes

Cette forme de détection de changement est souvent plus efficace qu'un simple sondage ou que des verrous d'attente active purs.

En raison du problème ABA , les changements transitoires de old vers une autre valeur et de retour à old pourraient ne pas être détectés, et ne pas débloquer.


Exemple

Voir aussi

(C++20)
notifie au moins un thread en attente sur l'objet atomique
(fonction membre publique)
(C++20)
notifie tous les threads bloqués en attente sur l'objet atomique
(fonction membre publique)
notifie un thread bloqué dans atomic_flag_wait
(fonction)
notifie tous les threads bloqués dans atomic_flag_wait
(fonction)