ATOMIC_VAR_INIT
|
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
|
(C11)
|
initialisiert ein neues
atomic_flag
(Makrokonstante) |
|
C++-Dokumentation
für
ATOMIC_VAR_INIT
|
|