--- title: Atomics slug: Web/JavaScript/Reference/Global_Objects/Atomics tags: - JavaScript - Shared Memory - Specifications translation_of: Web/JavaScript/Reference/Global_Objects/Atomics ---
Das Atomics Objekt unterstützt atomare Operationen als statische Methoden. Diese werden mit {{jsxref("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 {{jsxref("Math")}} Objekt).
Atomics[Symbol.toStringTag]"Atomics".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.
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.
"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).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.
| Spezifikation | Status | Kommentar |
|---|---|---|
| {{SpecName('ESDraft', '#sec-atomics-object', 'Atomics')}} | {{Spec2('ESDraft')}} | Initiale Definition in ES2017. |
| {{SpecName('ES8', '#sec-atomics-object', 'Atomics')}} | {{Spec2('ES8')}} |
{{Compat("javascript.builtins.Atomics")}}
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:
Atomics.futexWakeOrRequeue() und Atomics.fence() sind vollständig entfernt ({{bug(1259544)}} und {{bug(1225028)}}).Atomics.futexWait() und Atomics.futexWake() ({{bug(1260910)}}). Hinweis: Die alten Namen wurden in den Version 49 und später entfernt ({{bug(1262062)}}).Atomics.OK, Atomics.TIMEDOUT, Atomics.NOTEQUAL wurden entfernt. die Methode {{jsxref("Atomics.wait()")}} gibt jetzt die Strings "ok", "timed-out" und "not-equal" zurück ({{bug(1260835)}}).count Parameter der {{jsxref("Atomics.wake()")}} Methode wurde geändert: Der Standardwert ist +Infinity und nicht 0 ({{bug(1253350)}}).