std:: atomic_flag_wait, std:: atomic_flag_wait_explicit
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<atomic>
|
||
|
void
atomic_flag_wait
(
const
atomic_flag
*
object,
bool
old
)
noexcept
;
|
(1) | (depuis C++20) |
|
void
atomic_flag_wait
(
const
volatile
atomic_flag
*
object,
bool old ) noexcept ; |
(2) | (depuis C++20) |
|
void
atomic_flag_wait_explicit
(
const
atomic_flag
*
object,
bool old, std:: memory_order order ) noexcept ; |
(3) | (depuis C++20) |
|
void
atomic_flag_wait_explicit
(
const
volatile
atomic_flag
*
object,
bool old, std:: memory_order order ) noexcept ; |
(4) | (depuis C++20) |
Effectue des opérations d'attente atomiques.
Compare object - > test ( std:: memory_order_seq_cst ) ou object - > test ( order ) avec old , et s'ils sont égaux, bloque jusqu'à ce que * object soit notifié par std::atomic_flag::notify_one() ou std::atomic_flag::notify_all() (ou que le thread soit débloqué de manière spurious). Ceci est répété jusqu'à ce que les valeurs comparées soient différentes.
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.
Table des matières |
Paramètres
| object | - | pointeur vers le drapeau atomique à vérifier et attendre |
| old | - | la valeur à vérifier que le drapeau atomique ne contient plus |
| order | - | l'ordre de synchronisation de la mémoire |
Valeur de retour
(aucun)
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
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(C++20)
|
notifie au moins un thread en attente sur l'objet atomique
(fonction membre publique de
std::atomic_flag
)
|
|
(C++20)
|
notifie tous les threads bloqués en attente sur l'objet atomique
(fonction membre publique de
std::atomic_flag
)
|
|
(C++20)
|
notifie un thread bloqué dans atomic_flag_wait
(fonction) |
|
(C++20)
|
notifie tous les threads bloqués dans atomic_flag_wait
(fonction) |