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

js
Atomics.notify(typedArray, index, count)

Parameter

typedArray

Ein Int32Array oder BigInt64Array, das einen SharedArrayBuffer 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-geteiltes ArrayBuffer-Objekt verwendet wird.

Ausnahmen

TypeError

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

RangeError

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

Beispiele

Verwendung von notify

Angenommen, es gibt ein geteiltes Int32Array:

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

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