gpt4 book ai didi

go - go channel 和 goroutines 如何转换为 webassembly?

转载 作者:行者123 更新时间:2023-12-04 11:32:35 25 4
gpt4 key购买 nike

很长一段时间以来一直在用 Go 编程,最近开始研究 WebAssembly。虽然大多数事情都很简单,但关于将一些 Go 特定结构(如 channel 和 goroutines)转换为 wasm 有疑问。在 JS 中使用时,它们的行为是否与在 Go 中使用时的行为方式相同(例如,goroutines 作为异步函数公开给 JS 等)?

最佳答案

go 编译器的 WASM 目标当前不支持线程,或者 Go 称它们为“procs”。
这意味着,从语言用户的角度并稍微简化一下,运行在 WASM 上的 Go 程序的行为就像运行 GOMAXPROCS=1 的 Go 程序一样。在任何其他平台上。
至关重要的是,只要您在代码中使用适当的同步,从正确性的角度来看,什么都不应该改变。这包括 channel 和 goroutine 的语义,就像使用 GOMAXPROCS=1 运行代码时这些语义不会改变一样。 .
其工作方式是在构建的 WASM 模块中包含 go 运行时(及其调度程序)。 go 运行时,与 GOMAXPROCS=1 的情况完全一样即使只有一个线程/过程可用,也能够多路复用多个 goroutine 的执行。

关于go - go channel 和 goroutines 如何转换为 webassembly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67575197/

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