javascript / expert
Snippet
Konstruktion speichersicherer Binärpuffer in Svelte Writable Stores mittels SharedArrayBuffer-Wrappern
Dieses Codebeispiel kapselt rohe SharedArrayBuffer-Objekte in benutzerdefinierten Svelte Writable Stores unter Verwendung von TypedArray-Views und Atomics. Es ermöglicht thread-sichere Binäroperationen ohne Datenkopien und löst reaktive Svelte-UI-Updates nur bei expliziten Atomics-Mutationen aus.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import { writable } from 'svelte/store';export function createSharedBufferStore(byteLength) {const sab = new SharedArrayBuffer(byteLength);const view = new Int32Array(sab);const { subscribe, set } = writable(view);return {subscribe,updateAt(index, value) {Atomics.store(view, index, value);set(new Int32Array(sab));},getValueAt(index) {return Atomics.load(view, index);}};}
svelte
Erklärung
1
const sab = new SharedArrayBuffer(byteLength);
Allokiert einen speicherübergreifenden rohen Binärdatenpuffer fester Länge.
2
const view = new Int32Array(sab);
Erstellt eine 32-Bit-Integer-TypedArray-Ansicht auf den zugrunde liegenden Speicher.
3
Atomics.store(view, index, value);
Führt eine atomare Schreiboperation aus, um nebenläufige Schreibsicherheit zu garantieren.
4
set(new Int32Array(sab));
Gibt eine neue TypedArray-Referenz aus, um Svelte-Abonnenten-Benachrichtigungen auszulösen.