yanni的回答显示了如何向Web worker发送(转移所有权)一个缓冲区: Using transferable objects from a Web Worker
如何将多个缓冲区(在数组中)发送给Web worker(不复制)?
答案 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]
);