atomic_load, atomic_load_explicit
|
Definiert im Header
<stdatomic.h>
|
||
|
C atomic_load
(
const
volatile
A
*
obj
)
;
|
(1) | (seit C11) |
|
C atomic_load_explicit
(
const
volatile
A
*
obj,
memory_order
order
)
;
|
(2) | (seit C11) |
Lädt atomar und gibt den aktuellen Wert der atomaren Variable zurück, auf die
obj
zeigt. Der Vorgang ist ein atomarer Lesevorgang.
Die erste Version ordnet Speicherzugriffe gemäß
memory_order_seq_cst
, die zweite Version ordnet Speicherzugriffe gemäß
order
.
order
muss einer der folgenden sein:
memory_order_relaxed
,
memory_order_consume
,
memory_order_acquire
oder
memory_order_seq_cst
. Andernfalls ist das Verhalten undefiniert.
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 erhalten, wenn diese Operation auf flüchtige atomare Objekte angewendet wird.
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. durch Klammerung wie ( atomic_load ) ( ... ) ), oder ein Programm einen externen Bezeichner mit dem Namen einer generischen Funktion definiert, ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Parameter
| obj | - | Zeiger auf das atomare Objekt, auf das zugegriffen werden soll |
| order | - | die Speichersynchronisierungsreihenfolge für diesen Vorgang |
Rückgabewert
Der aktuelle Wert der atomaren Variable, auf die
obj
zeigt.
Referenzen
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.17.7.2 Die atomic_load-Generic-Funktionen (S: 206)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.17.7.2 Die atomic_load-Generic-Funktionen (S: 282)
Siehe auch
|
speichert einen Wert in einem atomaren Objekt
(Funktion) |
|
|
C++-Dokumentation
für
atomic_load
,
atomic_load_explicit
|
|