Namespaces
Variants

ATOMIC_FLAG_INIT

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
ATOMIC_FLAG_INIT
(C++11)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
Definido en el encabezado <atomic>
#define ATOMIC_FLAG_INIT /* implementation-defined */
(desde C++11)

Define el inicializador que puede utilizarse para inicializar std::atomic_flag al estado despejado (false) en la forma std:: atomic_flag v = ATOMIC_FLAG_INIT ; . No está especificado si puede utilizarse con otros contextos de inicialización.

Si la bandera es un objeto completo con duración de almacenamiento estático , esta inicialización es estática .

Esta es la única forma de inicializar std::atomic_flag a un valor definido: el valor mantenido después de cualquier otra inicialización no está especificado.

(until C++20)

Esta macro ya no es necesaria ya que el constructor por defecto de std::atomic_flag lo inicializa al estado despejado. Se mantiene por compatibilidad con C.

(since C++20)

Ejemplo

#include <atomic>
std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // inicialización estática,
// garantizada para estar disponible durante la inicialización dinámica de objetos estáticos.
int main()
{
    std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // garantizado que funciona
//    std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // no especificado
}

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2159 C++11 no estaba claro si ATOMIC_FLAG_INIT
puede usarse con otros contextos de inicialización
otros usos no están
garantizados
LWG 3659 C++20 ATOMIC_FLAG_INIT fue deprecado, pero necesario en C en algunas plataformas se elimina la deprecación

Véase también

el tipo atómico booleano libre de bloqueo
(clase)
Documentación de C para ATOMIC_FLAG_INIT