Atomics.compareExchange()
La méthode statique Atomics.compareExchange()
échange une valeur d'un tableau à un emplacement donné si la valeur qui était dans le tableau correspond à une valeur donnée. Cette méthode renvoie l'ancienne valeur à cet emplacement, qu'il y ait eu remplacement ou non. Cette opération atomique garantit qu'aucune autre opération d'écriture n'est appliquée tant que la valeur modifiée n'est pas écrite.
Exemple interactif
Syntaxe
Atomics.compareExchange(typedArray, index, valeurAttendue, valeurRemplacement);
Paramètres
typedArray
-
Un tableau typé entier partagé parmi
Int8Array
,Uint8Array
,Int16Array
,Uint16Array
,Int32Array
ouUint32Array
. index
-
La position du tableau
typedArray
à laquelle on veut échanger les valeurs. valeurAttendue
-
La valeur avec laquelle on teste l'égalité.
valeurRemplacement
-
Le nombre qu'on souhaite placer dans le tableau si l'ancienne valeur est égale avec
valeurAttendue
.
Valeur de retour
L'ancienne valeur présente à typedArray[index]
.
Exceptions levées
- Cette méthode lève
TypeError
si le type detypedArray
n'est pas un des types entiers autorisés. - Cette méthode lève
TypeError
sitypedArray
n'est pas tableau typé partagé. - Cette méthode lève
RangeError
siindex
est en dehors des limites detypedArray
.
Exemples
var sab = new SharedArrayBuffer(1024);
var ta = new Uint8Array(sab);
ta[0] = 7;
Atomics.compareExchange(ta, 0, 7, 12); // renvoie 7, l'ancienne valeur
Atomics.load(ta, 0); // 12
Spécifications
Specification |
---|
ECMAScript Language Specification # sec-atomics.compareexchange |
Compatibilité des navigateurs
BCD tables only load in the browser