Namensräume
Varianten
Aktionen

ATOMIC_VAR_INIT

Von cppreference.com
< cpp‎ | atomic
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
ATOMIC_VAR_INIT
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
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

#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) [bearbeiten]
konstruiert ein atomares Objekt
(public member function of std::atomic<T>) [bearbeiten]
C-Dokumentation für ATOMIC_VAR_INIT