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 Dezember 2021.
Die statische Methode Atomics.notify() benachrichtigt einige Agenten, die in der Wartewarteschlange schlafen.
Hinweis:
Diese Operation funktioniert nur mit einem Int32Array oder BigInt64Array, das einen SharedArrayBuffer betrachtet.
Sie wird 0 auf nicht-geteilten ArrayBuffer-Objekten zurückgeben.
Syntax
Atomics.notify(typedArray, index, count)
Parameter
typedArray-
Ein
Int32ArrayoderBigInt64Array, das einenSharedArrayBufferbetrachtet. index-
Die Position im
typedArray, bei der aufgeweckt werden soll. countOptional-
Die Anzahl der zu benachrichtigenden schlafenden Agenten. Standardwert ist
Infinity.
Rückgabewert
Gibt die Anzahl der aufgeweckten Agenten zurück oder 0, wenn typedArray eine Ansicht auf einem nicht-geteilten ArrayBuffer ist.
Ausnahmen
TypeError-
Wird ausgelöst, wenn
typedArraykeinInt32ArrayoderBigInt64Arrayist. RangeError-
Wird ausgelöst, wenn
indexaußerhalb der Grenzen imtypedArrayliegt.
Beispiele
Beachten Sie, dass diese Beispiele nicht direkt von der Konsole oder einer beliebigen Webseite ausgeführt werden können, da SharedArrayBuffer nicht definiert ist, es sei denn, seine Sicherheitsanforderungen sind erfüllt.
Verwendung von Atomics.notify()
Gegebenenfalls ein geteilter Int32Array:
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);
Ein lesender Thread schläft und wartet auf Position 0, da der angegebene Wert mit dem gespeicherten Wert an dem angegebenen index übereinstimmt.
Der lesende Thread wird sich erst weiterbewegen, wenn der schreibende Thread Atomics.notify() auf Position 0 des angegebenen typedArray aufgerufen hat.
Beachten Sie, dass, wenn nach dem Aufwecken der Wert an Position 0 nicht vom schreibenden Thread geändert wurde, der lesende Thread nicht wieder einschlafen wird, sondern fortfahren wird.
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® 2026 Language Specification> # sec-atomics.notify> |