JavaScript · Senior · Frage 13 von 75
Warum übergibt man einem Worker ein ArrayBuffer als Transferable: postMessage(buf, [buf])?
- 1Der Puffer wird geteilt, beide Threads sehen die Änderungen des anderen
- 2Der Puffer wird vor dem Senden komprimiert, was Speicher spart
- 3Das Eigentum wechselt ohne Kopie, der Quellpuffer wird geleert
Antwort zeigen
Richtige Antwort: Das Eigentum wechselt ohne Kopie, der Quellpuffer wird geleert
Erklärung
Große Daten zu kopieren ist teuer. Eine Übergabe überträgt den Speicher sofort, und beim Sender wird byteLength 0. Echter geteilter Speicher ist SharedArrayBuffer mit Atomics, er verlangt aber Cross-Origin-Isolation (Header COOP/COEP).