问题描述
我们可以通过WebAssembly.Memory
将WebAssembly内存设置为共享内存:
wasmMemory = new WebAssembly.Memory({
"initial": NUMBER,"maximum": NUMBER,"shared": true
});
WebAssembly.Memory.buffer
只有吸气剂,因此我不能执行以下操作:
buff = new SharedArrayBuffer(NUMBER);
wasmMemory.buffer = buff;
第一个问题:
它有这样的设计原因吗?我检查了SPEC,但没有找到答案。
也许 normal SharedArrayBuffer
和wasm的SharedArrayBuffer
的基础实现是相同的,尽管它们的instanceof
是相同的?
这个设计还有其他结果吗?
第二个问题:
在SharedArrayBuffer
中是否存在任何神奇的方法来将WebAssembly.Memory
放入其中?
我想这样做是因为我有一个新的类,它从原始的SharedArrayBuffer
扩展了,我也想在wasm中使用它。
解决方法
我也没有找到任何官方的解释,但是如果我不得不猜测,那是因为每当内存增长时,您的自定义缓冲区就会被默认缓冲区自动替换。