Namespaces
Variants

ATOMIC_VAR_INIT

From cppreference.net
Definiert im Header <stdatomic.h>
#define ATOMIC_VAR_INIT(value) /* unspecified */
(seit C11)
(veraltet in C17)
(entfernt in C23)

Erweitert sich zu einem Ausdruck, der zur Initialisierung einer atomaren Variable desselben Typs wie value verwendet werden kann.

Der Anfangswert eines atomaren Objekts mit automatischer Speicherdauer, der nicht explizit initialisiert wird, ist unbestimmt. Die Standard- (Null-) Initialisierung von statischen und thread-lokalen Variablen erzeugt jedoch einen gültigen Wert.

Beim Initialisieren einer atomaren Variable stellt jeder gleichzeitige Zugriff, selbst durch eine atomare Operation, einen Datenwettlauf dar (dies kann passieren, wenn die Adresse sofort an einen anderen Thread mit einer memory_order_relaxed Operation übergeben wird).

Inhaltsverzeichnis

Hinweise

Dieses Makro war Teil des frühen Entwurfsdesigns für C11-Atomartypen. Es wird in C11 nicht benötigt, ist in C17 als veraltet markiert und wurde in C23 entfernt.

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
DR 485 C11 die Spezifikation war redundant und widersprach der Kernsprache behoben

Referenzen

  • C17-Standard (ISO/IEC 9899:2018):
  • 7.17.2.1 Das ATOMIC_VAR_INIT-Makro (S: 201)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.17.2.1 Das ATOMIC_VAR_INIT-Makro (S: 274)

Siehe auch

initialisiert ein neues atomic_flag
(Makrokonstante)
C++-Dokumentation für ATOMIC_VAR_INIT