Die statische Atomics.wait() Methode verifiziert, dass eine gegebene Position in einem Int32Array ein gegebene Wert ist und dann schläft und entweder aufgeweckt wird oder ein Timeout bekommt. Die Strings "ok", "not-equal", und "timed-out" sind alle möglichen Rückgabewerte

Hinweis: Diese Operation funktioniert nur mit einem geteilten Int32Array und ist nicht im Main-Thread erlaubt.

Syntax

Atomics.wait(typedArray, index, value[, timeout])

Parameter

typedArray
Ein geteiltes Int32Array.
index
Die Position im typedArray, an der gewartet wird.
value
Der wert, mit dem getestet wird.
timeout Optional
Wartezeit in Millisekunden. Infinity, wenn keine Zeit angegeben wird.

Rückgabewert

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

Exceptions

  • Erzeugt einen TypeError, wenn typedArray kein  Int32Array ist.
  • Erzeugt ein RangeError, wenn der index nicht in den Grenzen von typedArray ist.

Beipsiele

Gegeben ist ein Int32Array:

var sab = new SharedArrayBuffer(1024);
var int32 = new Int32Array(sab);

Ein lesender Thread schläft und wartet auf Position 0, ander der Wert 0 erwartet wird. Solange diese gegeben ist, geht es nicht weiter. Immer wenn ein neuer schreibender Thread einen neuen Wert speichert, wacht der Thread. Im Anschluss ist der neue Wert an der Position 0 (123).

Atomics.wait(int32, 0, 0);
console.log(int32[0]); // 123

Ein schreibender Thread speichert einen neuen Wert und wacht den wartenden Thread nach dem Schreiben auf.

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

Spezifikationen

Spezifikation Status Kommentar
ECMAScript Latest Draft (ECMA-262)
Die Definition von 'Atomics.wait' in dieser Spezifikation.
Entwurf Initiale Definition in ES2017.

Browserkompatibilität

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidEdge MobileFirefox für AndroidOpera für AndroidiOS SafariSamsung InternetNode.js
Grundlegende UnterstützungChrome Vollständige Unterstützung 68
Vollständige Unterstützung 68
Keine Unterstützung 60 — 63
Hinweise
Hinweise Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This was a temporary removal while mitigations were put in place.
Edge Vollständige Unterstützung 16
Hinweise
Vollständige Unterstützung 16
Hinweise
Hinweise Support was removed to mitigate speculative execution side-channel attacks (Windows blog).
Firefox Vollständige Unterstützung 57
Hinweise Deaktiviert
Vollständige Unterstützung 57
Hinweise Deaktiviert
Hinweise Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog).
Deaktiviert From version 57: this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Keine Unterstützung 55 — 57
Keine Unterstützung 48 — 55
Deaktiviert
Deaktiviert From version 48 until version 55 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Keine Unterstützung 46 — 48
Hinweise Alternativer Name Deaktiviert
Hinweise The method returns values Atomics.OK, Atomics.TIMEDOUT, and Atomics.NOTEQUAL, instead of the later-specified strings.
Alternativer Name Verwendet den nicht standardisierten Namen: futexWait
Deaktiviert From version 46 until version 48 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE Keine Unterstützung NeinOpera Keine Unterstützung NeinSafari Keine Unterstützung 10.1 — ?WebView Android Keine Unterstützung 60 — 63
Hinweise
Keine Unterstützung 60 — 63
Hinweise
Hinweise Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place.
Chrome Android Keine Unterstützung 60 — 63
Hinweise
Keine Unterstützung 60 — 63
Hinweise
Hinweise Chrome disabled SharedArrayBuffer on January 5, 2018 to help reduce the efficacy of speculative side-channel attacks. This is intended as a temporary measure until other mitigations are in place.
Edge Mobile ? Firefox Android Vollständige Unterstützung 57
Hinweise Deaktiviert
Vollständige Unterstützung 57
Hinweise Deaktiviert
Hinweise Support was disabled by default to mitigate speculative execution side-channel attacks (Mozilla Security Blog).
Deaktiviert From version 57: this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Keine Unterstützung 55 — 57
Keine Unterstützung 48 — 55
Deaktiviert
Deaktiviert From version 48 until version 55 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Keine Unterstützung 46 — 48
Hinweise Alternativer Name Deaktiviert
Hinweise The method returns values Atomics.OK, Atomics.TIMEDOUT, and Atomics.NOTEQUAL, instead of the later-specified strings.
Alternativer Name Verwendet den nicht standardisierten Namen: futexWait
Deaktiviert From version 46 until version 48 (exclusive): this feature is behind the javascript.options.shared_memory preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android Keine Unterstützung NeinSafari iOS Keine Unterstützung NeinSamsung Internet Android Keine Unterstützung Neinnodejs Vollständige Unterstützung 8.10.0

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung
Kompatibilität unbekannt  
Kompatibilität unbekannt
Siehe Implementierungshinweise.
Siehe Implementierungshinweise.
Benutzer muss dieses Feature explizit aktivieren.
Benutzer muss dieses Feature explizit aktivieren.
Verwendet einen nicht standardisierten Namen.
Verwendet einen nicht standardisierten Namen.

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Mitwirkende an dieser Seite: schlagi123
Zuletzt aktualisiert von: schlagi123,