lua运行外部程序_Lua 协同程序(coroutine)
coroutine.creat方法只要建立了一个协程 ,那么这个协程的状态默认就是suspend。使用resume方法启动后,会变成running状态;遇到yield时将状态设为suspend;如果遇到return,那么将协程的状态改为dead。
coroutine.resume方法需要特别注意的一点是,这个方法只要调用就会返回一个boolean值。
coroutine.resume方法如果调用成功,那么返回true;如果有yield方法,同时返回yield括号里的参数;如果没有yield,那么继续运行直到协程结束;直到遇到return,将协程的状态改为dead,并同时返回return的值。
coroutine.resume方法如果调用失败(调用状态为dead的协程会导致失败),那么返回false,并且带上一句"cannot resume dead coroutine"
以下代码进行测试:
function yieldReturn(arg) return arg end
co_yieldtest = coroutine.create(
function()
print("启动协程状态"..coroutine.status(co_yieldtest))
print("--")
coroutine.yield()
coroutine.yield(1)
coroutine.yield(print("第3次调用"))
coroutine.yield(yieldReturn("第4次调用"))
return 2
end
)
print("启动前协程状态"..coroutine.status(co_yieldtest))
print("--")
for i = 1,6 do
print("第"..i.."次调用协程:", coroutine.resume(co_yieldtest))
print("当前协程状态"..coroutine.status(co_yieldtest))
print("--")
end
输出:
启动前协程状态suspended
--
启动协程状态running
--
第1次调用协程: true
当前协程状态suspended
--
第2次调用协程: true 1
当前协程状态suspended
--
第3次调用
第3次调用协程: true
当前协程状态suspended
--
第4次调用协程: true 第4次调用
当前协程状态suspended
--
第5次调用协程: true 2
当前协程状态dead
--
第6次调用协程: false cannot resume dead coroutine
当前协程状态dead
--
达也酱
达也酱
jja***@163.com3年前 (2017-11-10)
lua运行外部程序_Lua 协同程序(coroutine)相关推荐
- lua运行外部程序_Lua通过COM调用外部程序excel及调用windows api
[在我接触JNA之前一直以为调用本地链接库函数的时候一定要借助JNI或者SWT来实现,一日中无意看到JNA,发现它也可以实现这类调用,于是下回来按网站上的例子试试了 还不错, 为了方便起见,最好安装l ...
- Lua 协同程序(coroutine)
什么是协同(coroutine)? Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西. 协同是非常 ...
- Lua中的协同程序 coroutine
Lua中的协程和多线程很相似,每一个协程有自己的堆栈,自己的局部变量,可以通过yield-resume实现在协程间的切换.不同之处是:Lua协程是非抢占式的多线程,必须手动在不同的协程间切换,且同一时 ...
- lua运行外部程序_在C语言程序中嵌入Lua脚本
第一次知道Lua语言,是上个月在书城的时候,看到一本名为<魔兽世界编程宝典>的书.心想,魔兽世界还能编程?难道是自己编一个魔兽世界出来?翻开一看,原来是编写插件,用的是一种叫Lua的脚本语 ...
- lua运行外部程序_LTUI v2.2 发布, 一个基于lua的跨平台字符终端UI界面库
LTUI是一个基于lua的跨平台字符终端UI界面库. 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套 ...
- lua运行外部程序_一起聊聊redis(5)——c#的lua脚本应用实例之高并发抢口罩
本节内容 展示Redis数据库在高并发下实现抢口罩的例子,文章分3个实现的模式 不加锁 乐观锁 Lua脚本 前言 写于2020.2.8日疫情严重之日,抢口罩成为每晚8点档黄金时间必备节目,在报道上看到 ...
- lua运行外部程序_二、C++调用Lua函数
上一篇文章中我们已经把测试环境搭建完毕了,接下来就用上次的项目工程进行代码测试和分析. 这篇文章主要讲在C++中怎么调用Lua中的函数add,并且把lua中函数计算结果返回给C++,然后在打印出来计算 ...
- Unity 中的协同程序
今天咱就说说,协同程序coroutine.(这文章是在网吧敲的,没有unity,但是所有结论都被跑过,不管你信得过我还是信不过我,都要自己跑一下看看,同时欢迎纠错) 先说说啥是协程:协同程序是一个非常 ...
- unity控制程序等待_Unity 中的协同程序
今天咱就说说,协同程序coroutine.(这文章是在网吧敲的,没有unity,但是所有结论都被跑过,不管你信得过我还是信不过我,都要自己跑一下看看,同时欢迎纠错) 先说说啥是协程:协同程序是一个非常 ...
最新文章
- lib和dll文件的区别和联系
- 用SAXBuilder、Document、Element操作xml
- python十大高级特性_python--高级特性
- Effective Java读书笔记一:并发
- Mac zsh切换bash bash切换zsh
- science图表_Science:组合图表绘制
- 边栏实现过程中,导入style.css没用
- ubuntu 下pip3 与pipenv 安装使用错误
- SAP License:SAP凭证编号中跳号问题处理
- 2022年江西省研究生数学建模竞赛冰壶运动求解全过程文档及程序
- XTUOJ-1277-Triangle
- 股市基础知识、主力建仓、派发出货【四】
- python3字符串详解速查,新手流泪,老手顿悟
- 从零开始实现图片加载特效之黑白照片、倒影图片、图片蒙版
- nuscenes instance 调研笔记
- 数据库的应用之(智慧城市)
- Shiro权限控制+整合shiro
- 选择框,单选框,组合框,列表框
- mysql多数据表关联查询慢问题解决方案
- php中注册数字插不进去,进php数字