コンテンツへスキップ
uencoder

Transferable Objects

転送可能オブジェクト(ArrayBuffer、MessagePort、ImageBitmap)は、postMessage で渡すと所有権が移転し、送信側はアクセスできなくなる。

目的

大きなバッファを Worker にゼロコピーで渡し、直列化コピーのオーバーヘッドを避けて性能を上げる。

メカニズム

postMessage(data, [transferables]) とすると、transferables 配列内のオブジェクトの所有権が受信側に移る。送信側の元オブジェクトは detach され(長さ 0、アクセス不可)、受信側が元のオブジェクトを取得する。

ユースケース

  • Worker へのゼロコピー転送
  • 大きなバッファの転送
  • パフォーマンスの最適化

関連ツール

References