[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Atomics/wait [Back]  [Original]

Atomics.wait() - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

Atomics.wait()

Baseline Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Dezember 2021 browserbergreifend verfgbar.

Die statische Methode Atomics.wait() berprft, ob ein gemeinsam genutzter Speicherort einen bestimmten Wert enthlt, und schlft, falls dies zutrifft, in Erwartung einer Aufwachbenachrichtigung oder eines Timeouts. Sie gibt einen String zurck, der "not-equal" ist, wenn der Speicherort nicht dem angegebenen Wert entspricht, "ok", wenn er durch Atomics.notify() geweckt wurde, oder "timed-out", wenn das Timeout abluft.

Atomics.wait() und Atomics.notify() werden zusammen verwendet, um die Thread-Synchronisierung basierend auf einem Wert im gemeinsam genutzten Speicher zu ermglichen. Ein Thread kann sofort fortfahren, wenn sich der Synchronisationswert gendert hat, oder auf eine Benachrichtigung von einem anderen Thread warten, wenn er den Synchronisationspunkt erreicht.

Diese Methode funktioniert nur mit einem Int32Array oder BigInt64Array, das einen SharedArrayBuffer ansieht. Sie ist blockierend und kann nicht im Hauptthread verwendet werden. Fr eine nicht blockierende, asynchrone Version dieser Methode siehe Atomics.waitAsync().

In diesem Artikel

Syntax

js
Atomics.wait(typedArray, index, value)
Atomics.wait(typedArray, index, value, timeout)

Parameter

typedArray

Ein Int32Array oder BigInt64Array, das einen SharedArrayBuffer ansieht.

index

Die Position im typedArray, auf die gewartet werden soll.

value

Der erwartete Wert, der getestet werden soll.

timeout Optional

Wartezeit in Millisekunden. NaN (und Werte, die in NaN umgewandelt werden, wie undefined) wird zu Infinity. Negative Werte werden zu 0.

Rckgabewert

Ein String, der entweder "not-equal", "ok" oder "timed-out" ist.

  • "not-equal" wird sofort zurckgegeben, wenn der anfngliche value nicht dem entspricht, was an index gespeichert ist.
  • "ok" wird zurckgegeben, wenn durch einen Aufruf von Atomics.notify() geweckt, unabhngig davon, ob sich der erwartete Wert gendert hat.
  • "timed-out" wird zurckgegeben, wenn eine schlafende Wartezeit das angegebene timeout berschreitet, ohne von Atomics.notify() geweckt zu werden.

Ausnahmen

TypeError

Wird in einem der folgenden Flle ausgelst:

RangeError

Wird ausgelst, wenn index auerhalb der Grenzen des typedArray liegt.

Beispiele

Beachten Sie, dass diese Beispiele nicht direkt von der Konsole oder einer beliebigen Webseite ausgefhrt werden knnen, da SharedArrayBuffer nicht definiert ist, es sei denn, die Sicherheitsanforderungen sind erfllt.

Verwendung von Atomics.wait()

Gegeben ein gemeinsam genutztes Int32Array:

js
// Create a SharedArrayBuffer with a size in bytes
const sab = new SharedArrayBuffer(1024);
const int32 = new Int32Array(sab);

Ein lesender Thread schlft und wartet an Position 0, weil der bereitgestellte value dem entspricht, was an dem bereitgestellten index gespeichert ist. Der lesende Thread wird nicht weitermachen, bis der schreibende Thread Atomics.notify() auf Position 0 des bereitgestellten typedArray aufgerufen hat. Beachten Sie, dass der lesende Thread nach dem Aufwachen nicht wieder schlafen wird, wenn der Wert an Position 0 nicht vom schreibenden Thread gendert wurde, sondern weitermachen wird.

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 ihn geschrieben hat:

js
console.log(int32[0]); // 0;
Atomics.store(int32, 0, 123);
Atomics.notify(int32, 0, 1);

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-atomics.wait

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page