Espacios de nombres
Variantes
Acciones

std::atomic_ref<T>::wait

De cppreference.com
< cpp‎ | atomic‎ | atomic ref
 
 
 
 
(desde C++20)
void wait( T old,
           std::memory_order order = std::memory_order::seq_cst)constnoexcept;
void wait( T old,
           std::memory_order order = std::memory_order::seq_cst)constvolatilenoexcept;

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

  • Compara la representación del valor de this->load(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_ref 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.

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

[editar]Ejemplo

[editar]Véase también

(C++20)
Notifica al menos a un hilo/subproceso esperando al objeto atómico.
(función miembro pública)[editar]
(C++20)
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_wait.
(plantilla de función)[editar]
Notifica a todos los hilos bloqueados en atomic_wait.
(plantilla de función)[editar]
close