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.

Syntaxe

Atomics.compareExchange(typedArray, index, valeurAttendue, valeurRemplacement)

Paramètres

typedArray
Un tableau typé entier partagé parmi Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array ou Uint32Array.
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 de typedArray n'est pas un des types entiers autorisés.
  • Cette méthode lève TypeError si typedArray n'est pas tableau typé partagé.
  • Cette méthode lève RangeError si index est en dehors des limites de typedArray.

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

Spécification État Commentaires
ECMAScript Latest Draft (ECMA-262)
La définition de 'Atomics.compareExchange' dans cette spécification.
Projet Définition initiale avec ES2017.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet 68
Support complet 68
Aucun support 60 — 63
Notes
Notes Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This was a temporary removal while mitigations were put in place.
Edge Support complet 16
Notes
Support complet 16
Notes
Notes Support was removed to mitigate speculative execution side-channel attacks (Windows blog).
Firefox Support complet 57
Notes Désactivée
Support complet 57
Notes Désactivée
Notes Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog).
Désactivée From version 57: this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Aucun support 55 — 57
Aucun support 46 — 55
Désactivée
Désactivée From version 46 until version 55 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE Aucun support NonOpera Aucun support NonSafari Aucun support 10.1 — ?WebView Android Aucun support 60 — 63
Notes
Aucun support 60 — 63
Notes
Notes Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place.
Chrome Android Aucun support 60 — 63
Notes
Aucun support 60 — 63
Notes
Notes Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place.
Edge Mobile ? Firefox Android Support complet 57
Notes Désactivée
Support complet 57
Notes Désactivée
Notes Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog).
Désactivée From version 57: this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Aucun support 55 — 57
Aucun support 46 — 55
Désactivée
Désactivée From version 46 until version 55 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Support complet 8.10.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,