【问题标题】:What brand of coroutine does Lua implement?Lua 实现的是什么牌子的协程?
【发布时间】:2019-05-27 01:37:42
【问题描述】:

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

【问题讨论】:

  • 读完this page
  • TBH 我从阅读中得到的收获是,没有两个协程是相同的,也没有任何人描述它们的语言......

标签: lua coroutine


【解决方案1】:

免费提供的论文Coroutines in Lua 说:

Lua 实现了 非对称协程 的概念,通常表示为 semisymmetricsemicoroutines [Marlin, 1980], [Dahl et al ., 1972]。非对称协程工具之所以被称为是因为它们涉及两种类型的控制转移操作:一种用于(重新)调用协程,另一种用于挂起协程,后者将控制权返回给协程调用者。非对称协程可以看作是从属于它的调用者,它们之间的关系类似于被调用程序和调用程序之间的关系。 对称协程工具实现了一种不同的控制规则,它提供了一个单一的转移操作来将控制切换到指定的协程。因为对称协程能够在它们之间传递控制,所以据说它们在同一层次上运行。以下论点证明了为什么 Lua 提供非对称协程,而不是提供对称设施或两种机制。

【讨论】:

    猜你喜欢
    • 2014-06-30
    • 2020-07-26
    • 2021-09-01
    • 2011-03-27
    • 2011-01-27
    • 1970-01-01
    • 2011-05-03
    • 2011-11-04
    相关资源
    最近更新 更多