Namespaces
Variants

std::atomic_ref<T>:: 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 ( value_type old, std:: memory_order order =
std:: memory_order_seq_cst ) const noexcept ;
(constexpr desde C++26)

Realiza operaciones de espera atómicas. Se comporta como si repitiera los siguientes pasos:

  • Compara la representación de valor de this - > load ( order ) con la de old .
    • Si son iguales, entonces se bloquea hasta que * this sea notificado por notify_one() o notify_all() , o el hilo se desbloquee espuriamente.
    • De lo contrario, retorna.

Estas funciones están garantizadas para retornar solo si el valor ha cambiado, incluso si la implementación subyacente se desbloquea espuriamente.

Si order no es std:: memory_order_relaxed , std:: memory_order_consume , std:: memory_order_acquire o std:: memory_order_seq_cst , el comportamiento es indefinido.

Contenidos

Parámetros

old - el valor a comprobar que el objeto de atomic_ref ya no contiene
order - restricciones de orden de memoria a aplicar

Notas

Esta forma de detección de cambios suele ser más eficiente que el sondeo simple o los bloqueos de giro puros.

Debido al problema ABA , los cambios transitorios de old a otro valor y de vuelta a old podrían pasar desapercibidos y no desbloquearse.

La comparación es bit a bit (similar a std::memcmp ); no se utiliza ningún operador de comparación. Los bits de relleno que nunca participan en la representación del valor de un objeto son ignorados.

Ejemplo

Véase también

notifica al menos un hilo esperando en el objeto atómico
(función miembro pública)
notifica todos los hilos bloqueados esperando en el objeto atómico
(función miembro pública)
notifica un hilo bloqueado en atomic_wait
(plantilla de función)
notifica todos los hilos bloqueados en atomic_wait
(plantilla de función)