ATOMIC_VAR_INIT
Von cppreference.com
| Definiert in Header <atomic> |
||
| #define ATOMIC_VAR_INIT(value) /* implementierungsabhängig */ |
(seit C++11) (veraltet in C++20) |
|
Erweitert sich zu einem Ausdruck, der zur Initialisierung eines std::atomic-Objekts verwendet werden kann, das aus value initialisiert werden kann. Wenn das atomare Objekt eine statische Speicherklasse hat, ist diese Initialisierung eine Konstanteninitialisierung.
[bearbeiten] Hinweise
Der Zugriff auf die Variable während der Initialisierung von einem anderen Thread aus, selbst durch eine atomare Operation, ist ein Datenrennen (es kann passieren, wenn die Adresse sofort mit einer std::memory_order_relaxed-Operation an einen anderen Thread übergeben wird)
Dieses Makro wird hauptsächlich aus Kompatibilitätsgründen mit C bereitgestellt; es verhält sich genauso wie der Konstruktor von std::atomic.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <atomic> #include <iostream> int main() { std::atomic<int> a = ATOMIC_VAR_INIT(1); // std::atomic<int> a(1); // C++-only alternative std::cout << "Initialized std::atomic<int> as: " << a << '\n'; }
Ausgabe
Initialized std::atomic<int> as: 1
[bearbeiten] Siehe auch
| (C++11)(veraltet in C++20) |
nicht-atomare Initialisierung eines standardmäßig konstruierten atomaren Objekts (Funktions-Template) |
| konstruiert ein atomares Objekt (public member function of std::atomic<T>) | |
| C-Dokumentation für ATOMIC_VAR_INIT
| |