javascript / expert
Snippet
Thread-sichere Nebenläufigkeit mit Atomics
Atomics bieten Low-Level-Synchronisationsprimitive für SharedArrayBuffer. Im Gegensatz zur Standard-Arithmetik stellen Atomics sicher, dass Operationen ohne Unterbrechung durch andere Threads abgeschlossen werden, was Datenkorruption in mehrthreadigen Node.js-Anwendungen verhindert.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const buffer = new SharedArrayBuffer(1024);const view = new Int32Array(buffer);// In a worker or main thread:function incrementCounter(index) {// Atomic addition ensures no race conditions across threadsreturn Atomics.add(view, index, 1);}function waitForUpdate(index, expectedValue) {// Suspends execution until the value at index changesAtomics.wait(view, index, expectedValue);console.log('Value updated!');}
nodejs
Erklärung
1
new SharedArrayBuffer(1024)
Erstellt ein Speichersegment, das zwischen dem Hauptthread und Workern geteilt werden kann.
2
Atomics.add(view, index, 1)
Führt eine Thread-sichere Addition durch und gibt den alten Wert vor der Inkrementierung zurück.
3
Atomics.wait(view, index, expectedValue)
Versetzt einen Thread effizient in den Ruhezustand, bis er benachrichtigt wird oder sich der Wert vom erwarteten ändert.