Atomics

Das Atomics Objekt unterstützt atomare Operationen als statische Methoden. Diese werden mit SharedArrayBuffer Objekte benutzt.

Die atomaren Operationen sind auf dem Atomics Modul installiert. Anders, als bei anderen globalen Objekten, ist, dass Atomics kein Konstruktor ist. Man kann Atomics nicht mit einem new Operator oder als Funktion verwenden. Alle Eigenschaften und Methoden von Atomics sind statisch (genauso wie zum Beispiel bei dem Math Objekt).

Eigenschaften

Atomics[Symbol.toStringTag]
Der Wert dieser Eigenschaft ist: "Atomics".

Methoden

Atomare Operationen

Wenn Speicher geteilt wird, können mehrere Threads auf dem gleichen Speicher lesen und schreiben. Atomare Operationen stellen sicher, dass Werte in einer Operation geschrieben und gelesen werden bevor mit der nächste Operation begonnen wird und dass eine Operation nicht unterbrochen wird.

Atomics.add()
Addiert den angegebenen Wert dem existierenden Wert an der gegebenen Position im Array hinzu. Gibt den alten Wert an der Position zurück.
Atomics.and()
Berechnet ein Bitweises UND mit dem Wert an der angegebenen Position im Array und dem angegebenen Wert. Gibt den alten Wert an der Position zurück.
Atomics.compareExchange()
Speichert einen angegebenen Wert an der angegebenen Position im Array, wenn dieser gleich einem angegebene Wert ist. Gibt den alten Wert zurück.
Atomics.exchange()
Speichert einen angegebenen Wert an einer angegebenen Position im Array. Gibt den alten Wert zurück.
Atomics.load()
Gibt den Wert an einer angegebenen Position im Array zurück.
Atomics.or()
Berechnet ein Bitweises ODER mit dem gegebenen Wert an der angegebenen Position im Array und dem angegebenen Wert. Gibt den alten Wert an der Position zurück.
Atomics.store()
Speichert einen angegebenen Wert an einer angegebenen Position im Array. Gibt den Wert zurück.
Atomics.sub()
Subtrahiert einen angegebenen Wert von einem Wert an einer angegebenen Position im Array. Gibt den alten Wert an der Position zurück.
Atomics.xor()
Berechnet ein Bitweises XOR mit dem Wert an einer angegebenen Position im Array und einem angegebenen Wert. Gibt den alten Wert an der Position zurück.

Wait und notify

Die wait() und notify() Methoden sind auf Linux Futexes ("fast user-space mutex") modelliert und ermöglichen es zu warten, bis eine bestimmte Bedingung true wird, und wird als blockierendes Konstrukt verwendet.

Atomics.wait()
Überprüft, ob an der angegebenen Position in einem Array einen angegebener Wert enthalten ist und wartet oder bekommt ein Timeout. Es wird "ok", "not-equal", oder "timed-out" zurückgegeben. Wenn Warten im ausführenden Agenten nicht erlaubt ist, wird ein Fehler geworfen (die meisten Browser erlauben kein wait() im Browser main Thread).
Atomics.notify()
Benachrichtigt Agenten, die auf die angegebene Arrayposition warten. Gibt die Zahl der benachrichtigten Agenten zurück.
Atomics.isLockFree(size)

Eine primitive Optimierung, die feststellten kann, ob Locks und atomare Operationen benutzt werden können. Gibt true zurück, wenn atomare Operationen auf einem Array der gegebenen Elementgröße mit einer atomaren Hardwareoperation implementiert ist (im Gegensatz zu einem Lock). Nur für Experten.

Spezifikationen

Spezifikation Status Kommentar
ECMAScript (ECMA-262)
Die Definition von 'Atomics' in dieser Spezifikation.
Lebender Standard Initiale Definition in ES2017.
ECMAScript 2017 (ECMA-262)
Die Definition von 'Atomics' in dieser Spezifikation.
Standard  

Browserkompatibilität

BCD tables only load in the browser

Kompatibilitätshinweise

Vor Firefox 48 waren die neuesten API-Namen und Semantiken noch nicht implementiert. Die Unterschiede zwischen der Firefox Version 46 und der Version 48 sind:

Siehe auch