Atomics API 14.06.2021, 08:10 Uhr

Atomare Operationen

Über die Atomics API kann man auf gemeinsam genutzten Array-Buffern arbeiten.
Für die Parallelisierung von Aufgaben gibt es unter JavaScript die Worker API. Um wiederum von verschiedenen Workern beziehungsweiseaus verschiedenen JavaScript-Kontexten auf den gleichen Daten arbeiten zu können, ist in der ECMAScript-Spezifikation die Klasse SharedArrayBufferdefiniert. Von der API her ist diese identisch zu der Klasse ArrayBuffer, kann allerdings gleichzeitig von verschiedenen Workern heraus verwendet werden. Beim gleichzeitigen Zugriff kann es allerdings auch schnell zu Problemen, sogenannten Race Conditions kommen. Was genau das ist und wie man diese Art von Problemen umgehen kann, zeigt dieser Artikel.

ArrayBuffer vs. SharedArrayBuffer

Doch zunächst ein kurzes Beispiel, um den Unterschied zwischen ArrayBuffer und SharedArrayBuffer zu demonstrieren: im Folgenden wird gezeigt, wie sich die Worker API verwenden lässt, um vom Haupt-Thread einen separaten Worker-Thread zu erzeugen und dann vom Haupt-Thread Daten an den Worker-Thread zu senden. Hierzu wird wie in Bild 1 skizziert im Haupt-Thread im jeweiligen ArrayBufferan Index 0 eine Zählervariable mit dem Wert 1 initialisiert (Schritt 1) und dann der gesamte ArrayBuffer an den Worker-Thread geschickt (Schritt 2), der die Zählervariable wiederum um eins erhöht (Schritt 3).

Jetzt 1 Monat kostenlos testen!

Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
  • + Digitales Kundenkonto,
  • + Zugriff auf das digitale Heft,
  • + Zugang zum digitalen Heftarchiv,
  • + Auf Wunsch: Weekly Newsletter,
  • + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar