Lua实施什么牌子的协程?

时间:2018-12-29 17:41:37

标签: lua coroutine

有人能具体告诉我协程Lua实施什么“风味”吗?我问是因为Lua的协程似乎很适合我的问题,我希望能够在各个点(可能在嵌套函数调用中)暂停函数,然后再恢复它。尽管具有类似“协程/发生器”的构造,但这在例如C#或JavaScript。还有哪些其他语言支持这些类型的协程?

1 个答案:

答案 0 :(得分:4)

可免费获得的论文Coroutines in Lua说:

  

Lua实现了不对称协程的概念,通常被称为 semisymmetric semicoroutines [Marlin,1980],[Dahl等(1972年)。之所以称其为非对称协程设施,是因为它们涉及两种类型的控制传递操作:一种用于(重新)调用协程,而另一种则是挂起它,后者将控制权返回给协程调用者。不对称协程可以被认为是其调用方的从属,它们之间的关系类似于被调用例程和调用例程之间的关系。通过对称协程设备实现了不同的控制规则,该设施提供了将控制切换到指定协程的单个传递操作。因为对称协程可以在它们之间传递控制权,所以据说它们在相同的层次级别上运行。以下论点证明了为什么Lua提供不对称协程而不是提供对称功能或同时提供这两种机制。