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)相关推荐

  1. lua运行外部程序_Lua通过COM调用外部程序excel及调用windows api

    [在我接触JNA之前一直以为调用本地链接库函数的时候一定要借助JNI或者SWT来实现,一日中无意看到JNA,发现它也可以实现这类调用,于是下回来按网站上的例子试试了 还不错, 为了方便起见,最好安装l ...

  2. Lua 协同程序(coroutine)

    什么是协同(coroutine)? Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西. 协同是非常 ...

  3. Lua中的协同程序 coroutine

    Lua中的协程和多线程很相似,每一个协程有自己的堆栈,自己的局部变量,可以通过yield-resume实现在协程间的切换.不同之处是:Lua协程是非抢占式的多线程,必须手动在不同的协程间切换,且同一时 ...

  4. lua运行外部程序_在C语言程序中嵌入Lua脚本

    第一次知道Lua语言,是上个月在书城的时候,看到一本名为<魔兽世界编程宝典>的书.心想,魔兽世界还能编程?难道是自己编一个魔兽世界出来?翻开一看,原来是编写插件,用的是一种叫Lua的脚本语 ...

  5. lua运行外部程序_LTUI v2.2 发布, 一个基于lua的跨平台字符终端UI界面库

    LTUI是一个基于lua的跨平台字符终端UI界面库. 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套 ...

  6. lua运行外部程序_一起聊聊redis(5)——c#的lua脚本应用实例之高并发抢口罩

    本节内容 展示Redis数据库在高并发下实现抢口罩的例子,文章分3个实现的模式 不加锁 乐观锁 Lua脚本 前言 写于2020.2.8日疫情严重之日,抢口罩成为每晚8点档黄金时间必备节目,在报道上看到 ...

  7. lua运行外部程序_二、C++调用Lua函数

    上一篇文章中我们已经把测试环境搭建完毕了,接下来就用上次的项目工程进行代码测试和分析. 这篇文章主要讲在C++中怎么调用Lua中的函数add,并且把lua中函数计算结果返回给C++,然后在打印出来计算 ...

  8. Unity 中的协同程序

    今天咱就说说,协同程序coroutine.(这文章是在网吧敲的,没有unity,但是所有结论都被跑过,不管你信得过我还是信不过我,都要自己跑一下看看,同时欢迎纠错) 先说说啥是协程:协同程序是一个非常 ...

  9. unity控制程序等待_Unity 中的协同程序

    今天咱就说说,协同程序coroutine.(这文章是在网吧敲的,没有unity,但是所有结论都被跑过,不管你信得过我还是信不过我,都要自己跑一下看看,同时欢迎纠错) 先说说啥是协程:协同程序是一个非常 ...

最新文章

  1. lib和dll文件的区别和联系
  2. 用SAXBuilder、Document、Element操作xml
  3. python十大高级特性_python--高级特性
  4. Effective Java读书笔记一:并发
  5. Mac zsh切换bash bash切换zsh
  6. science图表_Science:组合图表绘制
  7. 边栏实现过程中,导入style.css没用
  8. ubuntu 下pip3 与pipenv 安装使用错误
  9. SAP License:SAP凭证编号中跳号问题处理
  10. 2022年江西省研究生数学建模竞赛冰壶运动求解全过程文档及程序
  11. XTUOJ-1277-Triangle
  12. 股市基础知识、主力建仓、派发出货【四】
  13. python3字符串详解速查,新手流泪,老手顿悟
  14. 从零开始实现图片加载特效之黑白照片、倒影图片、图片蒙版
  15. nuscenes instance 调研笔记
  16. 数据库的应用之(智慧城市)
  17. Shiro权限控制+整合shiro
  18. 选择框,单选框,组合框,列表框
  19. mysql多数据表关联查询慢问题解决方案
  20. php中注册数字插不进去,进php数字

热门文章

  1. spark代码连接hive_spark连接Hive
  2. Java 并发(Future 模式)
  3. bash 脚本编写_如何在Bash中编写循环
  4. istio_关于Istio的五件事
  5. 原生JS去除二维数组中重复了的一维数组
  6. Bootstrap 按钮上拉菜单
  7. HTML5 Web Storage事件
  8. HTML5 Canvas 图形组合
  9. 选择Bootstrap的理由
  10. 重读读书笔记的重要性