Namespaces
Variants

atomic_load, atomic_load_explicit

From cppreference.net
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