Namespaces
Variants

ATOMIC_VAR_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)
ATOMIC_VAR_INIT
(C++11) (deprecated in C++20)
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_VAR_INIT(value) /* definido por la implementación */
(desde C++11)
(obsoleto en C++20)

Se expande a una expresión que puede utilizarse para inicializar un objeto std::atomic que puede inicializarse desde value . Si el objeto atómico tiene duración de almacenamiento estático, esta inicialización es constant initialization .

Notas

Acceder a la variable durante la inicialización desde otro hilo, incluso mediante una operación atómica, es una carrera de datos (puede ocurrir si la dirección se pasa inmediatamente a otro hilo con una operación std::memory_order_relaxed )

Esta macro se proporciona principalmente para compatibilidad con C; se comporta igual que el constructor de std::atomic .

Ejemplo

#include <atomic>
#include <iostream>
int main()
{
    std::atomic<int> a = ATOMIC_VAR_INIT(1);
    // std::atomic<int> a(1);   // Alternativa exclusiva de C++
    std::cout << "Initialized std::atomic<int> as: " << a << '\n';
}

Salida:

Initialized std::atomic<int> as: 1

Véase también

(C++11) (obsoleto en C++20)
inicialización no atómica de un objeto atómico construido por defecto
(plantilla de función)
construye un objeto atómico
(función miembro pública de std::atomic<T> )
Documentación de C para ATOMIC_VAR_INIT