可以在Web Worker之间共享WebAssembly内存吗?

问题描述 投票:3回答:1

是否可以通过使用postMessage(如SharedArrayBuffer之类的2个工作程序在两个工作程序之间共享WebAssembly.memory?如果答案是肯定的,怎么办?

javascript shared-memory web-worker webassembly
1个回答
2
投票

您可以通过JavaScript API创建WebAssembly共享内存实例:

const memory = new WebAssembly.Memory({
  initial: 80,
  maximum: 80,
  shared: true
});

然后您可以通过postMessage将此内存实例发送给Web Worker:

const worker = new Worker("worker.js");
worker.postMessage({ memory });

然后,文件worker.js可以使用此共享内存实例创建WebAssembly模块,从而允许在不同线程中的模块实例之间共享它。

有关更完整的示例,请参阅此博客文章:

Faster Fractals with Multi-Threaded WebAssembly

© www.soinside.com 2019 - 2024. All rights reserved.