atomic_init
|
Definiert im Header
<stdatomic.h>
|
||
|
void
atomic_init
(
volatile
A
*
obj, C desired
)
;
|
(seit C11) | |
Initialisiert das standardkonstruierte atomare Objekt obj mit dem Wert desired . Die Funktion ist nicht atomar: gleichzeitiger Zugriff von einem anderen Thread, selbst durch eine atomare Operation, ist ein Datenrennen.
Dies ist eine
generische Funktion
, die für alle
atomaren Objekttypen
A
definiert ist. Das Argument ist ein Zeiger auf einen flüchtigen atomaren Typ, um Adressen sowohl nicht-flüchtiger als auch
flüchtiger
(z.B. speichergemappter E/A) atomarer Objekte zu akzeptieren, und die flüchtige Semantik bleibt bei der Anwendung dieser Operation auf flüchtige atomare Objekte erhalten.
C
ist der nicht-atomare Typ, der
A
entspricht.
Es ist nicht spezifiziert, ob der Name einer generischen Funktion ein Makro oder ein mit externer Bindung deklarierter Bezeichner ist. Wenn eine Makrodefinition unterdrückt wird, um auf eine tatsächliche Funktion zuzugreifen (z. B. in Klammern gesetzt wie ( atomic_init ) ( ... ) ), oder ein Programm einen externen Bezeichner mit dem Namen einer generischen Funktion definiert, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Parameter
| obj | - | Zeiger auf ein atomares Objekt zur Initialisierung |
| desired | - | der Wert, mit dem das atomare Objekt initialisiert wird |
Rückgabewert
(keine)
Hinweise
atomic_init
ist die einzige Möglichkeit, dynamisch allokierte atomare Objekte zu initialisieren. Zum Beispiel:
_Atomic int *p = malloc(sizeof(_Atomic int)); atomic_init(p, 42);
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 7.17.2.2 Die atomic_init-Generikfunktion (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.17.2.2 Die atomic_init-Generikfunktion (S: 201)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.17.2.2 Die atomic_init generische Funktion (S: 274-275)
Siehe auch
|
(C11)
(veraltet in C17)
(entfernt in C23)
|
initialisiert ein neues atomares Objekt
(Funktionsmakro) |
|
C++-Dokumentation
für
atomic_init
|
|