ATOMIC_VAR_INIT
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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
|
|