Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. Atomics
  6. wait()

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

View in EnglishAlways switch to English

Atomics.wait()

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 MethodeAtomics.wait() überprüft, ob ein Speicherort im gemeinsam genutzten Speicher einen angegebenen Wert enthält und schläft, falls dies zutrifft, während sie auf eine Weckbenachrichtigung oder einen Timeout wartet. Sie gibt einen String zurück, der"not-equal" ist, wenn der Speicherort nicht mit dem angegebenen Wert übereinstimmt,"ok", wenn er vonAtomics.notify() geweckt wurde, oder"timed-out", wenn der Timeout abläuft.

Atomics.wait() undAtomics.notify() werden zusammen verwendet, um eine Thread-Synchronisation basierend auf einem Wert im gemeinsam genutzten Speicher zu ermöglichen. Ein Thread kann sofort fortfahren, wenn sich der Synchronisationswert geändert hat, oder er kann auf eine Benachrichtigung von einem anderen Thread warten, wenn er den Synchronisationspunkt erreicht.

Diese Methode funktioniert nur mit einemInt32Array oderBigInt64Array, das einenSharedArrayBuffer betrachtet. Sie ist blockierend und kann nicht im Haupt-Thread verwendet werden. Für eine nicht blockierende, asynchrone Version dieser Methode sieheAtomics.waitAsync().

Syntax

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

Parameter

typedArray

EinInt32Array oderBigInt64Array, das einenSharedArrayBuffer betrachtet.

index

Die Position imtypedArray, auf die gewartet werden soll.

value

Der erwartete Wert zum Testen.

timeoutOptional

Wartezeit in Millisekunden.NaN (und Werte, die inNaN umgewandelt werden, wie z.B.undefined) wird zuInfinity. Negative Werte werden zu0.

Rückgabewert

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

  • "not-equal" wird sofort zurückgegeben, wenn der anfänglichevalue nicht dem entspricht, was beiindex gespeichert ist.
  • "ok" wird zurückgegeben, wenn der Aufruf vonAtomics.notify() geweckt wird,unabhängig davon, ob sich der erwartete Wert geändert hat.
  • "timed-out" wird zurückgegeben, wenn ein schlafender Wartevorgang den angegebenentimeout überschreitet, ohne dass er vonAtomics.notify() geweckt wird.

Ausnahmen

TypeError

Wird in einem der folgenden Fälle ausgelöst:

RangeError

Wird ausgelöst, wennindex außerhalb der Grenzen destypedArray liegt.

Beispiele

Verwendung von wait()

Gegeben ein gemeinsamesInt32Array:

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

Ein lesender Thread schläft und wartet an Position 0, weil der bereitgestelltevalue mit dem übereinstimmt, was an dem bereitgestelltenindex gespeichert ist.Der lesende Thread wird nicht weitermachen, bis der schreibende ThreadAtomics.notify() an Position 0 des bereitgestelltentypedArray aufgerufen hat.Beachten Sie, dass der lesende Threadnicht wieder einschlafen wird, nachdem er geweckt wurde, wenn der Wert an Position 0 nicht durch den schreibenden Thread geändert wurde, sondern fortfahren 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 geschrieben hat:

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

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-atomics.wait

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp