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
Definiert im Header <atomic>
#define ATOMIC_VAR_INIT(value) /* implementierungsdefiniert */
(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 Speicherdauer hat, handelt es sich bei dieser Initialisierung um eine constant initialization .

Hinweise

Der Zugriff auf die Variable während der Initialisierung von einem anderen Thread aus, selbst durch eine atomare Operation, ist ein Datenrennen (dies kann passieren, wenn die Adresse sofort an einen anderen Thread mit einer std::memory_order_relaxed Operation ü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 .

Beispiel

#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

Siehe auch

(C++11) (veraltet in C++20)
nicht-atomare Initialisierung eines standardkonstruierten atomaren Objekts
(Funktions-Template)
konstruiert ein atomares Objekt
(öffentliche Member-Funktion von std::atomic<T> )
C-Dokumentation für ATOMIC_VAR_INIT