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

时间:2019-07-19 14:25:22

标签: multithreading go webassembly

我正在研究一个javascript项目,该项目最初具有用JS编写的所有复杂逻辑。但是它很慢,因此由于架构限制,我们现在已将所有复杂的逻辑移植到golang,我们无法调用golang的API,因此我们转向了wasm,在其中将golang代码构建为wasm文件并从js代码中调用从而消除了API调用。

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

1 个答案:

答案 0 :(得分:0)

  

所以我的问题是我可以对浏览器中加载的wasm文件实施多线程处理吗?

总而言之:

WASM尚未完全支持多线程。仍然是just a proposal。也就是说,已经有issue为Go / WASM进行跟踪。

因此,实际上,这意味着乐观地认为Go 1.14是第一个可能包含(实验性)WASM Threading支持的Go版本,该支持可能会在2020Q1推出。稳定的支持可能至少还需要一个Go发布周期,所以也许2020Q3可以在生产中使用它。