gpt4 book ai didi

javascript - 如何在 Web Worker 中使用 WebAssembly (wasm) 代码?

转载 作者:数据小太阳 更新时间:2023-10-29 04:48:57 25 4
gpt4 key购买 nike

目前,Web Worker 是这样实例化的:

let worker = new Worker('worker.js');

然后浏览器获取 worker.js 并开始响应消息。

我想使用 WebAssembly 实现我的 worker 的功能。理想情况下,我想做这样的事情:

let worker = new Worker('worker.wasm');

但我很确定那是不可能的。最明显的替代方法是让 worker.js 获取 worker.wasm 并编译和运行它。但这意味着我们获取一个脚本 (worker.js),它的唯一工作是获取并运行另一个脚本 (worker.wasm)。这让我觉得很恶心。所以我的问题是:是否有一种在 Web Worker 中使用 WebAssembly 的更简洁的方法,它不会引入额外的获取步骤?

最佳答案

您可以postMessage WebAssembly.ModuleWorker。因此,您需要在主脚本中编译 foo.wasm,然后编译 postMessage,希望优化哪些实现,以免重新编译或重复代码(尽管在此时间不是所有的实现都这样做)。然后您只需要您的工作人员实例化。

实例化需要的一件事是 importObject,并且您传入的内容需要驻留在该 worker 中!所以即使你可以说“new worker with this .wasm”你也没有办法指定 importObject

这已记录在案 in structured clone ,这也会影响 IndexDB。

关于javascript - 如何在 Web Worker 中使用 WebAssembly (wasm) 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47083951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com