Transferable Objects
転送可能オブジェクト(ArrayBuffer、MessagePort、ImageBitmap)は、postMessage で渡すと所有権が移転し、送信側はアクセスできなくなる。
目的
大きなバッファを Worker にゼロコピーで渡し、直列化コピーのオーバーヘッドを避けて性能を上げる。
メカニズム
postMessage(data, [transferables]) とすると、transferables 配列内のオブジェクトの所有権が受信側に移る。送信側の元オブジェクトは detach され(長さ 0、アクセス不可)、受信側が元のオブジェクトを取得する。
ユースケース
- Worker へのゼロコピー転送
- 大きなバッファの転送
- パフォーマンスの最適化