1 Symmetric Coroutine
Lua支持asymmetric coroutine。对于symmetric coroutine,名为Coroutines in Lua的一篇论文,提供了如下的解决方案:
coro = {}
coro.main = function() end
coro.current = coro.main
function coro.create(f)
return coroutine.wrap(function(val) return nil, f(val) end)
end
function coro.transfer(k, val)
if coro.current ~= coro.main then
return coroutine.yield(k, val)
else
while k do
coro.current = k
if k == coro.main then
return val
end
k, val = k(val)
end
error("coroutine ended without transfering control...")
end
end
代码虽然不长,但是十分精致。通过yield/resume,以及一个dipatching循环,巧妙地实现了symmetric coroutine。此外在Revisiting Coroutines论文中,甚至用asymmetric coroutine实现了one-shot continuation。
2 Reference
Coroutines in Lua
Ana L´ucia de Moura , Noemi Rodriguez , Roberto Ierusalimschy
Revisiting Coroutines
Ana L´ucia de Moura and Roberto Ierusalimschy
分享到:
相关推荐
- **简述**:讲解了Lua中的协同程序(coroutine)的概念和使用方法。 - **知识点**: - 协同程序的基础知识。 - 创建和控制协同程序的API。 - 协同程序在实际项目中的应用案例。 **第10章 完整示例** - **简述**...
8. **协同程序与事件驱动**:Lua的协同程序(coroutine)是一种轻量级的并发模型,可用于实现非阻塞的事件驱动编程。 9. **标准库介绍**:书中会详细讨论Lua的标准库,包括字符串处理、数学运算、操作系统接口、...
8. **高级主题**:如线程、协程(coroutine)以及Lua的内存管理等深入话题。 通过阅读这本书,读者不仅可以掌握Lua的基本语法,还能理解其背后的原理和设计理念,从而在实践中更加自如地运用Lua进行开发。无论你是...
《LUA编程(programming in lua).pdf》这本书深入介绍了LUA这一轻量级脚本语言的各个方面,旨在帮助读者掌握LUA编程的核心概念和技术。LUA以其简洁的语法、高效性能和灵活性在游戏开发、系统配置、嵌入式系统等多个...
《Programming in Lua》是关于Lua编程语言的一本权威指南,由巴西坎皮纳斯大学的Pedro Malvino和Tiago铁木辛哥合著。这本书深入浅出地介绍了Lua语言的核心概念、语法以及最佳实践,旨在帮助开发者充分利用Lua的灵活...
9.1 Coroutine Basics 73 9.2 Pipes and Filters 76 9.3 Coroutines as Iterators 79 9.4 Non-Preemptive Multithreading 81 10 Complete Examples 87 10.1 Data Description 87 10.2 Markov Chain Algorithm ...
标题中的“testco.zip_lua coroutine”表明这是一个关于Lua协程(coroutine)的测试压缩包,可能包含了用于演示或教学的代码示例。描述中提到的“test for lua coroutine and linux makecontext”揭示了测试的两个...
Lua Coroutine,协程详解,lua 基本础,The Programming Language Lua
8. 高级主题:Lua的元编程能力、垃圾回收机制、线程与协程(coroutine)等内容,这些都是Lua进阶学习的重要部分。 9. 示例与实践:书中包含了大量的示例代码和实际应用场景,帮助读者理解和掌握Lua编程技巧,提升...
Lua的Coroutine通过`coroutine.create()`函数创建,然后使用`coroutine.resume()`和`coroutine.yield()`函数来启动和暂停线程。`coroutine.create()`接收一个函数作为参数,这个函数将在新的Coroutine中运行。`...
1963], who described coroutines as “subroutines who act as the master program”, and implemented this construct to simplify the cooperation between the lexical and syntactical analysers in a COBOL ...
8. **线程与协程**:Lua不支持多线程,但它提供了轻量级的协程(coroutine)机制,可以在单线程环境下实现并发执行。 9. **错误处理**:Lua通过try...catch结构进行错误处理,也可以使用pcall函数来捕获和处理运行...
Lua协同程序,或称为coroutine,是一种轻量级的并发机制,它在Lua编程语言中扮演着重要的角色。不同于线程,协同程序在概念上更接近于子程序,但它们允许非阻塞的暂停和恢复,使得在单线程环境中实现异步操作成为...
- **第9章 协同程序**:讲解了Lua中的协同程序(coroutine)机制,包括基础概念、应用场景等。 - **第10章 完整的示例**:提供了基于马尔可夫链算法的具体示例。 - **第二篇 Lua表与对象** - **第11章 数据结构*...
《Programming in Lua, 2Nd Edition》是Peter Norvig所著的权威之作,该书详细解析了Lua的各个方面,包括语言设计哲学、标准库的使用以及最佳实践。这本书适合已经有一定Lua基础的读者,它会带你深入理解Lua的底层...
通过深入学习《Lua中文手册》,你可以掌握Lua的高级特性,如元编程、协程(coroutine)以及对C语言的接口(C API)进行扩展,进一步提升你的编程能力。 总结,Lua是一种强大的脚本语言,适用于游戏开发、自动化任务...
2. **性能优势**:由于LuaJIT(Just-In-Time编译器)的存在,Lua代码可以被高效地执行,而且在Nginx的非阻塞事件模型下,能够处理大量并发连接,提高了系统性能。 ### 二、Lua在Nginx中的应用 1. **动态配置**:...
对于初学者,可以通过官方文档、在线教程、书籍(如《Programming in Lua》)等资源学习Lua。社区活跃,有许多开源项目和工具可供参考。 总之,Lua是一种功能强大、简洁易学的脚本语言,它在各种领域都展现出了...