Atomics.wait()
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
, wenntypedArray
keinInt32Array
ist. - Erzeugt ein
RangeError
, wenn derindex
nicht in den Grenzen vontypedArray
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 (ECMA-262) Die Definition von 'Atomics.wait' in dieser Spezifikation. |
Lebender Standard | Initiale Definition in ES2017. |
Browserkompatibilität
BCD tables only load in the browser