std::atomic_flag:: wait
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
(C++20)
|
||||
|
atomic_flag::wait
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
|
void
wait
(
bool
old,
std::
memory_order
order
=
std:: memory_order_seq_cst ) const noexcept ; |
(1) |
(desde C++20)
(constexpr desde C++26) |
|
void
wait
(
bool
old,
std::
memory_order
order
=
|
(2) | (desde C++20) |
Realiza operaciones de espera atómicas. Se comporta como si repitiera los siguientes pasos:
-
Compara
this
-
>
test
(
order
)
con el 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 para verificar que el objeto
atomic_flag
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.
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Véase también
|
(C++20)
|
notifica al menos un hilo esperando en el objeto atómico
(función miembro pública) |
|
(C++20)
|
notifica todos los hilos bloqueados esperando en el objeto atómico
(función miembro pública) |
|
(C++20)
|
notifica un hilo bloqueado en atomic_flag_wait
(función) |
|
(C++20)
|
notifica todos los hilos bloqueados en atomic_flag_wait
(función) |