将多个数组缓冲区发送给Javascript Web worker?

时间:2013-11-18 08:12:58

标签: javascript web buffer worker arraybuffer

yanni的回答显示了如何向Web worker发送(转移所有权)一个缓冲区: Using transferable objects from a Web Worker

如何将多个缓冲区(在数组中)发送给Web worker(不复制)?

2 个答案:

答案 0 :(得分:2)

Worker#postMessage获取一系列可转移的对象,

var worker = new Worker("...");
var buffers = [new ArrayBuffer, new ArrayBuffer, new ArrayBuffer];
var message = {buffers: buffers};

worker.postMessage(message, buffers);

这是一个小例子,http://jsfiddle.net/g247v/

答案 1 :(得分:2)

这个问题在其他地方已经得到解答,但是Google在我最终找到答案here之前先把我带到了这里。

您可以将多个缓冲区传递给Web Worker,而无需使用Transferable objects执行复制:

工作人员案例,第一个参数是数据,第二个参数是应传输的项目列表。顺便说一句,第一个参数不必是ArrayBuffer。例如,它可以是JSON对象:

worker.postMessage(
  {data: int8View, moreData: anotherBuffer},
  [int8View.buffer, anotherBuffer]
);