std::atomic_ref<T>:: wait
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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
|
Esta sección está incompleta
Razón: sin 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) |
|
|
(C++20)
|
notifica un hilo bloqueado en atomic_wait
(plantilla de función) |
|
(C++20)
|
notifica todos los hilos bloqueados en atomic_wait
(plantilla de función) |