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) |
Liest atomar und gibt den aktuellen Wert der atomaren Variable zurück, auf die obj zeigt. Die Operation ist ein atomarer Lesezugriff.
Die erste Version ordnet Speicherzugriffe gemäß memory_order_seq_cst an, die zweite Version ordnet Speicherzugriffe gemäß order an. order muss einer der folgenden Werte 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 volatilen atomaren Typ, um Adressen von sowohl nicht-volatilen als auch volatilen (z. B. speicherprogrammierten I/O) atomaren Objekten zu akzeptieren, und die volatile Semantik wird bei Anwendung dieser Operation auf volatile atomare Objekte beibehalten. C ist der nicht-atomare Typ, der A entspricht.
Es ist nicht spezifiziert, ob der Name einer generischen Funktion ein Makro oder ein Bezeichner mit externer Bindung ist. Wenn eine Makrodefinition unterdrückt wird, um auf eine tatsächliche Funktion zuzugreifen (z. B. geklammert wie (atomic_load)(...)), oder wenn ein Programm einen externen Bezeichner mit dem Namen einer generischen Funktion definiert, ist das Verhalten undefiniert.
Inhalt |
[bearbeiten] Parameter
| obj | - | Zeiger auf das atomare Objekt, auf das zugegriffen werden soll |
| Reihenfolge | - | die Speicherordnungssynchronisation für diese Operation |
[bearbeiten] Rückgabewert
Der aktuelle Wert der atomaren Variable, auf die obj zeigt.
[bearbeiten] Referenzen
- C17-Standard (ISO/IEC 9899:2018)
- 7.17.7.2 Die generischen Funktionen atomic_load (S. 206)
- C11-Standard (ISO/IEC 9899:2011)
- 7.17.7.2 Die generischen Funktionen atomic_load (S. 282)
[bearbeiten] Siehe auch
| speichert einen Wert in einem atomaren Objekt (Funktion) | |
| C++ Dokumentation für atomic_load, atomic_load_explicit
| |