如何在使用 golang 创建的 wasm 中实现多线程



我正在做一个javascript项目,该项目最初是用JS编写的。然而,它非常慢,所以我们现在将所有复杂的逻辑移植到 golang 上,由于架构限制,我们无法调用 golang 的 API,所以我们转向了 wasm,您将 golang 代码构建到 wasm 文件中并从您的 js 代码调用它,从而消除了 API 调用。

现在一切都运行良好,直到我们收到一些复杂的对象,如果你通过wasm执行,这需要很多时间,但如果你通过golang运行它只需要几秒钟。所以我的问题是我可以在浏览器中加载的wasm文件中实现多线程吗?

所以我的问题是我可以在浏览器中加载的wasm文件中实现多线程吗?

一句话:没有。

WASM 中尚未正式支持多线程。这仍然只是一个提案。 也就是说,Go/WASM已经存在跟踪此问题的问题。

因此,实际上,这意味着,

乐观地说,Go 1.14 是第一个可能包含(实验性(WASM 线程支持的 Go 版本,可能会在 2020Q1 推出。 稳定的支持可能至少需要一个 Go 发布周期,所以也许 2020Q3 您将能够在生产中使用它。

最新更新