atomic_exchange, atomic_exchange_explicit
|
Défini dans l'en-tête
<stdatomic.h>
|
||
|
C atomic_exchange
(
volatile
A
*
obj, C desired
)
;
|
(1) | (depuis C11) |
|
C atomic_exchange_explicit
(
volatile
A
*
obj, C desired,
memory_order
order
)
;
|
(2) | (depuis C11) |
Remplace atomiquement la valeur pointée par
obj
avec
desired
et retourne la valeur
obj
détenue 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 d'objets atomiques à la fois 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 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_exchange ) ( ... ) ), 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 à modifier |
| desired | - | valeur de remplacement de l'objet atomique |
| order | - | ordonnancement de synchronisation mémoire pour cette opération : toutes les valeurs sont autorisées |
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.3 Les fonctions génériques atomic_exchange (p: 207)
- Norme C11 (ISO/IEC 9899:2011) :
-
- 7.17.7.3 Les fonctions génériques atomic_exchange (p: 283)
Voir aussi
|
échange une valeur avec un objet atomique si l'ancienne valeur correspond à celle attendue, sinon lit l'ancienne valeur
(fonction) |
|
|
Documentation C++
pour
atomic_exchange
,
atomic_exchange_explicit
|
|