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 Wartewarteschlange schlafen.

Hinweis: Diese Operation funktioniert nur mit einem Int32Array oder BigInt64Array, das einen SharedArrayBuffer betrachtet. Sie wird 0 zurückgeben bei nicht-geteilten ArrayBuffer-Objekten.

Syntax

js
Atomics.notify(typedArray, index, count)

Parameter

typedArray

Ein Int32Array oder BigInt64Array, das einen SharedArrayBuffer betrachtet.

index

Die Position im typedArray, bei der aufgeweckt werden soll.

count Optional

Die Anzahl der zu benachrichtigenden schlafenden Agenten. Standardmäßig Infinity.

Rückgabewert

  • Gibt die Anzahl der aufgeweckten Agenten zurück.
  • Gibt 0 zurück, wenn ein nicht-geteiltes ArrayBuffer-Objekt verwendet wird.

Ausnahmen

TypeError

Wird ausgelöst, wenn typedArray kein Int32Array oder BigInt64Array ist, das einen SharedArrayBuffer betrachtet.

RangeError

Wird ausgelöst, wenn index außerhalb der Grenzen im typedArray liegt.

Beispiele

Verwendung von notify

Gegeben ein geteilter Int32Array:

js
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);

Ein lesender Thread schläft und wartet an Position 0, die erwartet wird, 0 zu sein. Solange das der Fall ist, wird er nicht weitermachen. Sobald jedoch der schreibende Thread einen neuen Wert gespeichert hat, wird er vom schreibenden Thread benachrichtigt und gibt den neuen Wert (123) zurück.

js
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:

js
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

Siehe auch