【发布时间】:2011-03-27 01:46:50
【问题描述】:
我有一个关于协程实现的问题。
我首先在 Lua 和 stackless-python 上看到了 coroutine。我可以理解它的概念,以及如何使用yield 关键字,但我不知道它是如何实现的。
我能得到一些关于它们的解释吗?
【问题讨论】:
标签: scheme implementation coroutine
我有一个关于协程实现的问题。
我首先在 Lua 和 stackless-python 上看到了 coroutine。我可以理解它的概念,以及如何使用yield 关键字,但我不知道它是如何实现的。
我能得到一些关于它们的解释吗?
【问题讨论】:
标签: scheme implementation coroutine
通过压入目标地址来启动协程,然后每个协程切换将当前 PC 与栈顶交换,最终必须弹出以终止协程。
【讨论】:
另请参阅:Implementing “Generator” support in a custom language。生成器基本上是(半)协程的一种有限形式,该问题中讨论的大部分内容也适用于此。
另外:How are exceptions implemented under the hood? 虽然异常显然与协程有很大不同,但它们都有一些共同点:两者都是高级通用控制流构造。 (其实可以用异常来实现协程,也可以用协程来实现异常。)
【讨论】: