Espacios de nombres
Variantes
Acciones

std::atomic_flag::wait

De cppreference.com
< cpp‎ | atomic‎ | atomic flag
 
 
 
 
(desde C++20)
void wait( bool old,
           std::memory_order order = std::memory_order::seq_cst ) const noexcept;
void wait( bool old,
           std::memory_order order = std::memory_order::seq_cst ) const volatile noexcept;

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

  • Compara this->test(order) con la de old.
    • Si son iguales, entonces se bloquea hasta que *this es notificado mediante notify_one() o notify_all(), o el hilo se desbloquea falsamente (spuriously).
    • De otra forma, regresa.

Se garantiza que estas funciones solamente regresan si el valor ha cambiado, aun si la implementación subyacente desbloquea falsamente.

Contenido

[editar] Parámetros

old - El valor a comprobar que el objeto de atomic_flag ya no contenga.
order - El orden de sincronización de memoria para esta operación. No debe ser std::memory_order::release o std::memory_order::acq_rel

[editar] Valor de retorno

(Ninguno)

[editar] Notas

Esta forma de detección de cambio frecuentemente es más eficiente que un simple sondeo (polling) o cerrojos de espín (spinlocks).

Debido al problema ABA, cambios transitorios de old a otro valor y de regreso a old pueden perderse, y no desbloquear.


[editar] Ejemplo

[editar] Véase también

Notifica al menos a un hilo/subproceso esperando al objeto atómico.
(función miembro pública) [editar]
Notifica a todos los hilos/subprocesos bloqueados esperando al objeto atómico.
(función miembro pública) [editar]
Notifica a un hilo bloqueado en atomic_flag_wait.
(función) [editar]
Notifica a todos los hilos bloqueados en atomic_flag_wait.
(función) [editar]