Atomics.waitAsync()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
La méthode statique Atomics.waitAsync()
permet d'attendre de façon asynchrone à un emplacement de mémoire partagée et renvoie une promesse.
À la différence de Atomics.wait()
, waitAsync()
n'est pas bloquante et peut être utilisée sur le fil d'exécution principal.
Note :
Cette opération ne fonctionne qu'avec un tableau typé partagé entier Int32Array
ou BigInt64Array
.
Syntaxe
Atomics.waitAsync(typedArray, index, value);
Atomics.waitAsync(typedArray, index, value, timeout);
Paramètres
typedArray
-
Un tableau typé partagé de type
Int32Array
ouBigInt64Array
. index
-
La position au sein du tableau typé
typedArray
à laquelle on souhaite attendre. value
-
La valeur attendue à tester.
timeout
Facultatif-
Le temps à attendre, exprimé en millisecondes. Par défaut, c'est la valeur
Infinity
qui est utilisée.
Valeur de retour
Un objet Promise
dont la valeur de résolution est l'un des objets suivants :
{ async: false, value: 'ok' }
{ async: false, value: 'not-equal' }
{ async: false, value: 'timed-out' }
{ async: true, value: promise }
Exemples
Utiliser waitAsync()
Soit un tableau de mémoire partagée Int32Array
.
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
Un thread de lecture est en sommeil et attend la valeur 0 à l'emplacement 0. La promesse resultat
est renvoyée immédiatement.
const resultat = Atomics.waitAsync(int32, 0, 0, 1000);
// { async: true, value: promise }
Dans le thread de lecture ou dans un autre thread, on fait appel à l'emplacement mémoire 0 et la promesse peut être résolue avec value: "ok"
.
Atomics.notify(int32, 0);
// { async: false, value: "ok" }
Si la résolution ne founit pas value: "ok"
, cela signifie que :
- La valeur située à cet emplacement de la mémoire partagée n'était pas la valeur attendue (
"not-equal"
) - Ou que la durée d'attente a expiré (
"time-out"
).
Spécifications
Specification |
---|
ECMAScript Language Specification # sec-atomics.waitasync |
Compatibilité des navigateurs
BCD tables only load in the browser