lua - Lua 实现的是什么牌子的协程?
问题描述
谁能具体告诉我协程 Lua 实现了什么“风味”?我问是因为 Lua 的协程似乎很适合我的一个问题,我希望能够在不同的点暂停一个函数,可能在嵌套函数调用中,然后稍后恢复它。尽管有类似的类似“协程/生成器”的构造,但这在例如 C# 或 JavaScript 中似乎是不可能的。还有哪些其他语言支持这些类型的协程?
解决方案
Lua 实现了非对称协程的概念,通常表示为半对称或半协程[ Marlin , 1980], [Dahl et al., 1972]。非对称协程工具之所以被称为是因为它们涉及两种类型的控制转移操作:一种用于(重新)调用协程,另一种用于挂起协程,后者将控制权返回给协程调用者。一个非对称协程可以被认为是从属于它的调用者,它们之间的关系类似于被调用例程和调用例程之间的关系。不同的控制规则由对称实现协程工具,它提供了一个单一的转移操作,用于将控制切换到指定的协程。因为对称协程能够在它们之间传递控制,所以据说它们在同一层次上运行。以下论点证明了为什么 Lua 提供非对称协同程序,而不是提供对称设施或两种机制。
推荐阅读
- python - Robot Framework Selenium For 循环单击导航链接失败并出现 StaleElementReferenceException
- c# - 无法导航到身份注销页面-ASP.Net Core 3.1-
- c# - 从位图矩形获取圆的直径
- javascript - 为什么我会收到“未捕获的类型错误:无法读取 null 的属性‘样式’”
- pandas - 结合 prefetch_related 和 pandas
- r - 使用 acs 包在 r 中调用数据配置文件 (DP) 表
- css - 在带有网格的表单中转换
- excel - 需要帮助将范围从一个工作簿转移到另一个工作簿,每个范围都转到单独的工作表
- python - 当我设置 TZ 环境变量时,为什么 dateparser 在我的 Flask 应用程序中停止工作?
- python - Snakemake 未知数量的输出文件/基于中间文件定义通配符