需要明确标记协程切出(被广泛称为无栈协程)的设计我觉得用在静态类型语言中,是很合理的,这类语言要求性能,无栈协程更利于性能优化,特别是解决并发问题的时候,并且标记函数的副作用也是符合静态语言的诉求的(但神奇的是用的较多的 Java 和 Go 都是用了有栈模型)
但脚本语言通常性能瓶颈不在这里,需要编写快速,消除细节,但以几个比较流行的通用脚本语言为例
python,js 都采用的无栈协程方案
js 的话我理解因为 js 的设计就是在单线程环境下运行,采用有栈方案的话会影响历史代码的兼容性?
python 之前多线程就是抢占式的,但是之后还是采用了无栈方案,是因为 c-api 兼容吗
似乎就 lua 支持了有栈的方案?但 lua 的生态却很比较单薄。