std:: atomic_wait, std:: atomic_wait_explicit
|
Definido en el encabezado
<atomic>
|
||
|
template
<
class
T
>
void
atomic_wait
(
const
std::
atomic
<
T
>
*
object,
|
(1) | (desde C++20) |
|
template
<
class
T
>
void
atomic_wait
(
const
volatile
std::
atomic
<
T
>
*
object,
|
(2) | (desde C++20) |
|
template
<
class
T
>
void
atomic_wait_explicit
(
const
std::
atomic
<
T
>
*
object,
|
(3) | (desde C++20) |
|
template
<
class
T
>
void
atomic_wait_explicit
(
const
volatile
std::
atomic
<
T
>
*
object,
|
(4) | (desde C++20) |
Realiza operaciones de espera atómicas. Se comporta como si repitiera los siguientes pasos:
-
Compare la
representación de valor
de
object
-
>
load
(
)
(para las sobrecargas
(1,2)
) o
object
-
>
load
(
order
)
(para las sobrecargas
(3,4)
) con la de
old
.
- Si son bitwise iguales, entonces bloquea hasta que * object sea notificado por std::atomic::notify_one() o std::atomic::notify_all() , o el hilo se desbloquee espuriamente.
- De lo contrario, retorna.
Estas funciones garantizan que solo retornarán si el valor ha cambiado, incluso si la implementación subyacente se desbloquea espuriamente.
Contenidos |
Parámetros
| object | - | puntero al objeto atómico a verificar y esperar |
| old | - | el valor para verificar que el objeto 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.
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
|
(C++20)
|
bloquea el hilo hasta que sea notificado y el valor atómico cambie
(función miembro pública de
std::atomic<T>
)
|
|
(C++20)
|
notifica al menos un hilo esperando en el objeto atómico
(función miembro pública de
std::atomic<T>
)
|
|
(C++20)
|
notifica todos los hilos bloqueados esperando en el objeto atómico
(función miembro pública de
std::atomic<T>
)
|
|
(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) |