Atomics : méthode statique notify()
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis décembre 2021.
La méthode statique notify() de l'objet Atomics permet de réveiller des agents dormants qui sont dans la file d'attente.
Note :
Cette opération ne fonctionne qu'avec un Int32Array ou un BigInt64Array qui est une vue sur un SharedArrayBuffer.
Elle renverra 0 pour les objets ArrayBuffer non partagés.
Syntaxe
Atomics.notify(typedArray, index, count)
Paramètres
typedArray-
Un objet
Int32Arrayou unBigInt64Arrayqui est une vue sur unSharedArrayBuffer. index-
La position sur le tableau
typedArraypour laquelle réveiller les agents. count-
Le nombre d'agents dormants à réveiller. Par défaut, la valeur est
Infinity.
Valeur de retour
Retourne le nombre d'agents réveillés, ou 0 si typedArray est une vue sur un objet ArrayBuffer non partagé.
Exceptions
TypeError-
Levée si
typedArrayn'est pas unInt32Arrayou unBigInt64Array. RangeError-
Levée si
indexest en dehors des limites detypedArray.
Exemples
>Utilisation de notify()
Étant donné un Int32Array partagé :
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
Un processus de lecture est en sommeil et attend sur l'emplacement 0 parce que la value fournie correspond à ce qui est stocké à l'index fourni.
Le processus de lecture n'avancera pas tant que le processus d'écriture n'aura pas appelé Atomics.notify() sur la position 0 du typedArray fourni.
Notez que si, après avoir été réveillé, la valeur de l'emplacement 0 n'a pas été modifiée par le processus d'écriture, le processus de lecture ne retournera pas en sommeil, mais continuera.
Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123
Un processus d'écriture stocke une nouvelle valeur et notifie le processus en attente une fois qu'il a écrit :
console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-atomics.notify> |
Compatibilité des navigateurs
Voir aussi
- L'objet
Atomics - La méthode
Atomics.wait() - La méthode
Atomics.waitAsync()