Namensräume
Varianten
Aktionen

atomic_store, atomic_store_explicit

Von cppreference.com
< c‎ | atomar
Definiert im Header <stdatomic.h>
void atomic_store( volatile A* obj , C desired );
(1) (seit C11)
void atomic_store_explicit( volatile A* obj, C desired, memory_order order );
(2) (seit C11)

Atomar ersetzt den Wert der durch obj zeigenden atomaren Variablen durch desired. Die Operation ist eine atomare Schreiboperation.

Die erste Version ordnet Speicherzugriffe gemäß memory_order_seq_cst, die zweite Version ordnet Speicherzugriffe gemäß order. order muss einer der folgenden Werte sein: memory_order_relaxed, memory_order_release 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 mit externem Linkage deklarierter Bezeichner ist. Wenn eine Makrodefinition unterdrückt wird, um auf eine tatsächliche Funktion zuzugreifen (z. B. in Klammern wie (atomic_store)(...)), 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 zu modifizierende atomare Objekt
Reihenfolge - die Speicherordnungssynchronisation für diese Operation

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Referenzen

  • C17-Standard (ISO/IEC 9899:2018)
  • 7.17.7.1 Die generischen Funktionen atomic_store (S. 206)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.17.7.1 Die generischen Funktionen atomic_store (S. 282)

[bearbeiten] Siehe auch

liest einen Wert aus einem atomaren Objekt
(Funktion) [bearbeiten]
C++ Dokumentation für atomic_store, atomic_store_explicit