javascript / expert
Snippet
Threadsichere Synchronisation mit Atomics
Atomics bietet statische Methoden zur Durchführung atomarer Operationen auf SharedArrayBuffer-Daten. Dies ist entscheidend für multithreaded JavaScript (Web Worker), um Race Conditions zu verhindern und den Speicherzugriff zwischen Threads zu synchronisieren.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
const buffer = new SharedArrayBuffer(1024);const i32 = new Int32Array(buffer);// In Worker AAtomics.store(i32, 0, 123);Atomics.notify(i32, 0, 1);// In Worker Bconst result = Atomics.wait(i32, 0, 0);if (result === 'ok') {console.log(Atomics.load(i32, 0));}
Erklärung
1
SharedArrayBuffer
Ein Speicherpuffer, der über mehrere Threads/Worker hinweg geteilt werden kann.
2
Atomics.wait(i32, 0, 0)
Pausiert die Ausführung, wenn der Wert an Index 0 gleich 0 ist, bis eine Benachrichtigung erfolgt.
3
Atomics.notify(i32, 0, 1)
Weckt einen Worker auf, der an Index 0 des Arrays wartet.