你能否在 Web Workers 之间共享 WebAssembly 内存?

9

是否可以通过使用postMessage共享WebAssembly.memory在两个worker之间?就像SharedArrayBuffer一样?如果答案是肯定的,那么如何做到?

1个回答

9
您可以通过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模块,从而使其在不同线程的模块实例之间共享。

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

使用多线程WebAssembly加速分形图形


非常感谢!我已经多次阅读了您的帖子,我很想和您交流。在worker.js中,我可以使用一些类似于JS中SharedArrayBuffer的指令吗?如果您能给我一个联系方式的链接,我将不胜感激。 - user12052616
我想在一个无限循环中递增内存的内容从0,并且在代码中随时读取其值。我的问题是:如何在工作程序中实现这部分代码,以及如何读取它?谢谢。 - user12052616

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接