Skip to content
uupaa edited this page Jun 11, 2015 · 3 revisions

Thread#post(args) や ThreadProxy#post(args) の args の値は、実は毎回コピーが行われています。

この仕組は Structured clone と呼ばれています。

この Structured clone によるクローニングは少量のデータにおいては十分に高速ですが、送信するデータが増えると物量に比例して遅くなってしまいます。

  • 画像処理やデコードの結果など、大量のメモリを扱う場合はどうしたら?
  • 大量のデータを扱ってもパフォーマンスは大丈夫?

と心配する方もいるでしょう。

Thread.js は Transferable Object をサポートしており、この仕組を使うとメモリをコピーせず、所有権だけを他のスレッドに譲渡することができます。
(C/C++をご存知の方はメモリのアドレスを渡す…と考えるとイメージを掴みやすいでしょうか)

Transferable Object を使うと、不要なメモリコピーを抑止することができます。
大きなメモリをスレッド間で移動させる場合は、できるだけ利用するようにしてください。

Clone this wiki locally