举例详解Lua中的协同程序编程
这篇文章主要介绍了Lua中的协同程序编程,是Lua入门学习中的基础知识,需要的朋友可以参考下
协同程序是协同的性质,可以把两个或更多的方法以可控制的方式执行。随着协同程序,在任何给定的时间,只有其协同程序运行之一,这在运行协同程序只能暂停其执行时,明确要求暂停。
上述定义可能看起来模糊。来告诉它更清楚,假设我们有两个方法,一个主程序方法和协同程序。当我们使用恢复功能调用协程,其开始执行,当我们调用yield功能,暂停执行。再次同协程可以继续从它被暂停的另一个恢复功能调用执行。这个过程可以继续,直到执行了协程的结束。
协同程序可用的功能
下表列出了在Lua协同程序及其相应的使用所有的可用功能。

例子
让我们看一个例子就明白了协程的概念。
local tempvar3 =10
print("coroutine section 1", value1, value2, tempvar3)
local tempvar1 = coroutine.yield(value1+1,value2+1)
tempvar3 = tempvar3 + value1
print("coroutine section 2",tempvar1 ,tempvar2, tempvar3)
local tempvar1, tempvar2= coroutine.yield(value1+value2, value1-value2)
tempvar3 = tempvar3 + value1
print("coroutine section 3",tempvar1,tempvar2, tempvar3)
return value2, "end"
end)
print("main", coroutine.resume(co, 3, 2))
print("main", coroutine.resume(co, 12,14))
print("main", coroutine.resume(co, 5, 6))
print("main", coroutine.resume(co, 10, 20))
相关文章
Golang使用ChatGPT生成单元测试实践
这篇文章主要为大家介绍了Golang使用ChatGPT生成单元测试实践详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
Lua中的模块(module)和包(package)详解
这篇文章主要介绍了Lua中的模块(module)和包(package)详解,本文讲解了require函数、写一个模块、package.loaded、module函数等内容,需要的朋友可以参考下
Lua 中 pairs 和 ipairs 的区别
这篇文章主要介绍了Lua 中 pairs 和 ipairs 的区别,本文用官方文档和代码实例总结了它的们的区别,需要的朋友可以参考下
Lua实现split函数
这篇文章主要介绍了Lua实现split函数,lua中没有split分割字条串函数,本文使用自定义函数实现,需要的朋友可以参考下
Lua教程(一):简介、优势和应用场景介绍
这篇文章主要介绍了Lua教程(一):简介、优势和应用场景介绍,本文是Lua教程系列文章的第一篇,需要的朋友可以参考下