Namespaces
Variants

atomic_load, atomic_load_explicit

From cppreference.net
Défini dans l'en-tête <stdatomic.h>
C atomic_load ( const volatile A * obj ) ;
(1) (depuis C11)
C atomic_load_explicit ( const volatile A * obj, memory_order order ) ;
(2) (depuis C11)

Charge atomiquement et retourne la valeur actuelle de la variable atomique pointée par obj . L'opération est une opération de lecture atomique.

La première version ordonne les accès mémoire selon memory_order_seq_cst , la seconde version ordonne les accès mémoire selon order . order doit être l'une des valeurs suivantes : memory_order_relaxed , memory_order_consume , memory_order_acquire ou memory_order_seq_cst . Sinon, le comportement est indéfini.

Ceci est une fonction générique définie pour tous les types d'objets atomiques A . L'argument est un pointeur vers un type atomique volatile pour accepter les adresses des objets atomiques non volatiles et volatiles (par exemple les E/S mappées en mémoire), et la sémantique volatile est préservée lors de l'application de cette opération aux objets atomiques volatiles. C est le type non atomique correspondant à A .

Il n'est pas spécifié si le nom d'une fonction générique est une macro ou un identifiant déclaré avec une liaison externe. Si une définition de macro est supprimée pour accéder à une fonction réelle (par exemple entre parenthèses comme ( atomic_load ) ( ... ) ), ou si un programme définit un identifiant externe avec le nom d'une fonction générique, le comportement est indéfini.

Table des matières

Paramètres

obj - pointeur vers l'objet atomique à accéder
order - l'ordre de synchronisation de la mémoire pour cette opération

Valeur de retour

La valeur actuelle de la variable atomique pointée par obj .

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.17.7.2 Les fonctions génériques atomic_load (p: 206)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.17.7.2 Les fonctions génériques atomic_load (p: 282)

Voir aussi

stocke une valeur dans un objet atomique
(fonction)
Documentation C++ pour atomic_load , atomic_load_explicit