javascript / expert
Snippet
Manipulieren von Shared-Memory-Slices mittels TypedArray-Sub-Slices
TypedArray-Sub-Slices ermöglichen mehrere Sichten auf denselben gemeinsamen Speicherblock (SharedArrayBuffer). Atomare Änderungen über eine Sicht spiegeln sich sofort in allen überlappenden Sichten wider.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
import assert from 'node:assert/strict';const sharedBuffer = new SharedArrayBuffer(1024);const masterArray = new Int32Array(sharedBuffer);masterArray[0] = 42;const subView = new Int32Array(sharedBuffer, 0, 4);assert.equal(subView[0], 42);Atomics.add(subView, 0, 10);assert.equal(masterArray[0], 52);
nodejs
Erklärung
1
const sharedBuffer = new SharedArrayBuffer(1024);
Allokiert einen roh-binären Puffer fester Länge, auf den über Worker-Threads hinweg zugegriffen werden kann.
2
const subView = new Int32Array(sharedBuffer, 0, 4);
Erstellt ein typisiertes Fenster, das direkt auf einen bestimmten Offset des zugrunde liegenden Shared Memory verweist.
3
Atomics.add(subView, 0, 10);
Führt eine threadsichere atomare Addition durch, die direkt auf dem Speicherbereich der Shared-Array-Slice operiert.