Atomics.notify()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since December 2021.
Die statische Methode Atomics.notify()
benachrichtigt einige Agenten, die in der Warteschlange schlafen.
Hinweis:
Diese Operation funktioniert nur mit einem Int32Array
oder BigInt64Array
, das einen SharedArrayBuffer
anzeigt.
Sie gibt 0
zurück, wenn nicht-geteilte ArrayBuffer
-Objekte verwendet werden.
Syntax
Atomics.notify(typedArray, index, count)
Parameter
typedArray
-
Ein
Int32Array
oderBigInt64Array
, das einenSharedArrayBuffer
anzeigt. index
-
Die Position im
typedArray
, auf der geweckt werden soll. count
Optional-
Die Anzahl der schlafenden Agenten, die benachrichtigt werden sollen. Standardmäßig ist dies
Infinity
.
Rückgabewert
- Gibt die Anzahl der aufgeweckten Agenten zurück.
- Gibt
0
zurück, wenn ein nicht-geteiltesArrayBuffer
-Objekt verwendet wird.
Ausnahmen
TypeError
-
Wird ausgelöst, wenn
typedArray
keinInt32Array
oderBigInt64Array
ist, das einenSharedArrayBuffer
anzeigt. RangeError
-
Wird ausgelöst, wenn
index
außerhalb der Grenzen imtypedArray
liegt.
Beispiele
Verwendung von notify
Angenommen, es gibt ein geteiltes Int32Array
:
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
Ein lesender Thread schläft und wartet an der Position 0, weil der bereitgestellte value
mit dem Wert an dem bereitgestellten index
übereinstimmt. Der lesende Thread wird nicht fortfahren, bis der schreibende Thread Atomics.notify()
für die Position 0 des bereitgestellten typedArray
aufgerufen hat. Beachten Sie, dass der lesende Thread, nachdem er geweckt wurde, nicht wieder schlafen geht, wenn der Wert an der Position 0 vom schreibenden Thread nicht geändert wurde, sondern weiterläuft.
Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123
Ein schreibender Thread speichert einen neuen Wert und benachrichtigt den wartenden Thread, sobald er geschrieben hat:
console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-atomics.notify |
Browser-Kompatibilität
BCD tables only load in the browser