Namespaces
Variants

atomic_fetch_xor, atomic_fetch_xor_explicit

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

Remplace atomiquement la valeur pointée par obj par le résultat du OU exclusif bit à bit entre l'ancienne valeur de obj et arg , et retourne la valeur que obj contenait précédemment. L'opération est une opération de lecture-modification-écriture. La première version ordonne les accès mémoire selon memory_order_seq_cst , la deuxième version ordonne les accès mémoire selon order .

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, 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. M est soit le type non atomique correspondant à A si A est un type entier atomique, soit ptrdiff_t si A est un type pointeur atomique.

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, mise entre parenthèses comme ( atomic_fetch_xor ) ( ... ) ), ou si un programme définit un identifiant externe portant 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 à modifier
arg - valeur à appliquer par OU exclusif bit à bit à la valeur stockée dans l'objet atomique
order - ordonnancement de synchronisation mémoire pour cette opération : toutes les valeurs sont permises

Valeur de retour

La valeur précédemment détenue par l'objet atomique pointé par obj .

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.17.7.5 Les fonctions génériques atomic_fetch et modify (p: 208)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.17.7.5 Les fonctions génériques atomic_fetch et modify (p: 284-285)

Voir aussi

OU atomique au niveau du bit
(fonction)
ET atomique au niveau du bit
(fonction)
Documentation C++ pour atomic_fetch_xor , atomic_fetch_xor_explicit