javascript / expert
Snippet
Null-Kopie-Übertragung von TypedArrays via Transferable Objects in Next.js Server Action Workern
Bei der Verarbeitung großer numerischer Datensätze in Next.js Server Actions führt das Übertragen eines ArrayBuffers an einen Worker-Thread mittels Transferable Objects zur sofortigen Speicherabtrennung im Hauptthread ohne Kopieraufwand.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
import { Worker } from 'node:worker_threads';export async function processLargeDatasetAction(rawNumbers) {const buffer = new Float64Array(rawNumbers).buffer;return new Promise((resolve, reject) => {const worker = new Worker('./worker.js');worker.postMessage({ payload: buffer }, [buffer]);worker.on('message', (result) => resolve(new Float64Array(result)));worker.on('error', reject);});}
nextjs
Erklärung
1
const buffer = new Float64Array(rawNumbers).buffer;
Extrahiert den zugrundeliegenden rohen ArrayBuffer aus der Float64Array-Instanz.
2
worker.postMessage({ payload: buffer }, [buffer]);
Übergibt den ArrayBuffer über die Transferliste an den Worker-Thread, wodurch die Speichereigentümerschaft sofort übertragen wird.