std:: atomic_flag_wait, std:: atomic_flag_wait_explicit
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<atomic>
|
||
|
void
atomic_flag_wait
(
const
atomic_flag
*
object,
bool
old
)
noexcept
;
|
(1) | (desde C++20) |
|
void
atomic_flag_wait
(
const
volatile
atomic_flag
*
object,
bool old ) noexcept ; |
(2) | (desde C++20) |
|
void
atomic_flag_wait_explicit
(
const
atomic_flag
*
object,
bool old, std:: memory_order order ) noexcept ; |
(3) | (desde C++20) |
|
void
atomic_flag_wait_explicit
(
const
volatile
atomic_flag
*
object,
bool old, std:: memory_order order ) noexcept ; |
(4) | (desde C++20) |
Realiza operaciones de espera atómicas.
Compara object - > test ( std:: memory_order_seq_cst ) o object - > test ( order ) con old , y si son iguales entonces bloquea hasta que * object sea notificado por std::atomic_flag::notify_one() o std::atomic_flag::notify_all() (o el hilo se desbloquee espuriamente). Esto se repite hasta que los valores se comparen como desiguales.
Estas funciones están garantizadas para retornar solo si el valor ha cambiado, incluso si la implementación subyacente se desbloquea espuriamente.
Contenidos |
Parámetros
| object | - | puntero al indicador atómico para verificar y esperar |
| old | - | el valor para verificar que el indicador atómico ya no contiene |
| order | - | el orden de sincronización de memoria |
Valor de retorno
(ninguno)
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 de
std::atomic_flag
)
|
|
(C++20)
|
notifica todos los hilos bloqueados esperando en el objeto atómico
(función miembro pública de
std::atomic_flag
)
|
|
(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) |