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
Défini dans l'en-tête <atomic>
#define ATOMIC_VAR_INIT(value) /* implementation-defined */
(depuis C++11)
(obsolète en C++20)

Se développe en une expression qui peut être utilisée pour initialiser un std::atomic pouvant être initialisé à partir de value . Si l'objet atomique a une durée de stockage statique, cette initialisation est une initialisation constante .

Notes

Accéder à la variable pendant l'initialisation depuis un autre thread, même via une opération atomique, constitue une course aux données (cela peut se produire si l'adresse est immédiatement transmise à un autre thread avec une std::memory_order_relaxed opération)

Cette macro est principalement fournie pour assurer la compatibilité avec le C ; elle se comporte de la même manière que le constructeur de std::atomic .

Exemple

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

Sortie :

Initialized std::atomic<int> as: 1

Voir aussi

(C++11) (déprécié en C++20)
initialisation non atomique d'un objet atomique construit par défaut
(modèle de fonction)
construit un objet atomique
(fonction membre publique de std::atomic<T> )
Documentation C pour ATOMIC_VAR_INIT