首页 > 解决方案 > 如何在使用 golang 创建的 wasm 中实现多线程?

问题描述

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

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

标签: multithreadinggowebassembly

解决方案


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

一句话:没有

WASM 中还没有正式支持多线程。它仍然只是一个提议。也就是说,Go/WASM 已经存在跟踪此问题的问题。

所以这实际上意味着,乐观地说,Go 1.14 是第一个可能包含(实验性)WASM 线程支持的 Go 版本,它可能会在 2020 年第一季度发布。稳定的支持可能需要至少一个 Go 发布周期,所以也许 2020Q3 你可以在生产中使用它。


推荐阅读