--- title: Atomics.compareExchange() slug: Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange tags: - Atomics - JavaScript - Mémoire partagée - Méthode - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/compareExchange original_slug: Web/JavaScript/Reference/Objets_globaux/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.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Atomics.compareExchange(typedArray, index, valeurAttendue, valeurRemplacement)
typedArray
index
typedArray
à laquelle on veut échanger les valeurs.valeurAttendue
valeurRemplacement
valeurAttendue
.L'ancienne valeur présente à typedArray[index]
.
typedArray
n'est pas un des types entiers autorisés.typedArray
n'est pas tableau typé partagé.index
est en dehors des limites de typedArray
.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écification | État | Commentaires |
---|---|---|
{{SpecName('ESDraft', '#sec-atomics.compareexchange', 'Atomics.compareExchange')}} | {{Spec2('ESDraft')}} | Définition initiale avec ES2017. |
{{Compat("javascript.builtins.Atomics.compareExchange")}}