Можете ли вы поделиться памятью WebAssembly между веб-работниками? - PullRequest
3 голосов
/ 20 января 2020

Можно ли поделиться WebAssembly.memory между двумя работниками, используя postMessage, что-то вроде SharedArrayBuffer? И если ответ да, то как?

1 Ответ

2 голосов
/ 20 января 2020

Вы можете создать экземпляр совместно используемой памяти WebAssembly через JavaScript API:

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

Затем вы можете отправить этот экземпляр памяти веб-работнику через postMessage:

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

Файл worker.js может затем создать модуль WebAssembly с использованием этого экземпляра совместно используемой памяти, что позволяет использовать его совместно с экземпляром модуля в разных потоках.

Более подробный пример см. В этом сообщении в блоге:

Более быстрые фракталы с многопоточной веб-сборкой

...