另一种实现goroutine的方案

TinyGo面向MCU和webassembly,所以,不能用Go原版的多线程m:n模型的goroutine方案。那么TinyGo是怎么实现goroutine的呢?

TinyGo研究 | Go for Funhttps://go4fun.org/article/6stackless的实现方式是C++等语言增加协程的时候的第一选择,开销小但是需要处理好所有的block调用,否则会阻塞调度器。

另一种实现goroutine的方案_第1张图片

显然,这样实现的协程可以充分利用llvm提供的机制,快速高效在不同的协程间切换。在MCU环境,由于资源受限,这一点就非常的关键了。

你可能感兴趣的:(golang,mcu)