Lua之coroutine基础

本文介绍了Lua中coroutine的基础知识,包括coroutine的创建、恢复、挂起状态以及yield函数的使用。通过示例代码展示了coroutine的运行流程,强调了yield在流程中的作用,如何进行参数传递和返回值的处理,并给出了一个详细的coroutine使用示例。
摘要由CSDN通过智能技术生成

转自http://blog.csdn.net/wusheng520/article/details/7954666

一、基本环境:

Microsoft Windows XP/Service Pack 2

Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio


二、 coroutine的接口:

(1) coroutine.create()

(2) coroutine.resume()

(3) coroutine.yield()

(4) coroutine.status()

(5) coroutine.wrap()

(6) coroutine.running()


三、coroutine的状态分为suspend, running, dead三种。


四、coroutine的基本流程

下面的代码说明了coroutine的基本流程

[plain]  view plain   copy
  1. co = coroutine.create(function(a, b)  
  2.     print(coroutine.status(co), "start")   --执行代码,coroutine状态为running--->(3)  
  3.     print("co", a, b)  
  4.     print(coroutine.status(co), "end")    --执行代码,coroutine状态为running     --->(4)  
  5. end)  
  6.   
  7. print(coroutine.status(co))       --刚创建的coroutine的状态为suspend   --->(1)  
  8. coroutine.resume(co, 1, 2)       --启动coroutine,将跳转到coroutine的function执行   --->(2)  
  9. print(coroutine.status(co))       --coroutine执行完毕,状态为dead    --->(5)  

代码的执行结果如下:

[plain]  view plain   copy
  1. >lua -e "io.stdout:setvbuf 'no'" "cur.lua"   
  2. suspended  
  3. running    start  
  4. co    1    2  
  5. running    end  
  6. dead  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值