有一些语言支持确定性轻量级并发——协程。
- Lua - 协程
- 无堆栈 Python - tasklet
- 红宝石 - 纤维
- 应该更多......但目前我没有太多想法。
无论如何,据我所知,它需要许多分离的堆栈,所以我想知道这些语言如何处理堆栈增长。这是因为我读到一些关于 4KB 的 Ruby Fiber的提及——显然开销很大——并且他们将其宣传为防止堆栈溢出的功能。但我不明白为什么他们只是说堆栈会自动增长。虚拟机(不限于 C 堆栈)无法处理堆栈增长是没有意义的,但我无法确认这一点,因为我不太了解内部结构。
他们如何处理这类微线程上的堆栈增长?是否有任何显式/隐式限制?或者只是会被清楚地自动处理?