Chinaunix首页 | 论坛 | 博客
  • 博客访问: 527326
  • 博文数量: 118
  • 博客积分: 2575
  • 博客等级: 大尉
  • 技术积分: 1263
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-27 09:37
文章分类

全部博文(118)

文章存档

2017年(11)

2016年(8)

2015年(1)

2014年(9)

2013年(7)

2012年(38)

2011年(14)

2010年(18)

2009年(12)

分类: 嵌入式

2011-01-25 16:26:02

lua中的coroutine提供了合作式的多线程支持,也就是说,它实际上不是在cpu上原生的多线程,只是一个线程中可以保存多个执行环境.依赖于resume与yield进行执行环境的切换.

resume可以将参数传递给coroutine的主程序,因为coroutine也就是thread刚开始创建的时候,是处理suspend状态的.

yield可以带上参数,这样resume的时候,可以获得yield提供的参数 .

yield返回时,还可以获得resume提供的参数.

coroutine的返回值,也能够被resume获得.

可以认为resume是一个函数调用,直到yield或者coroutine运行完毕,才得以返回.而yield也是一个函数调用,直到resume时,才会返回.初创建的coroutine可以认为有一个隐含的yield调用,但是没有返回什么东西.

阅读(6363) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-08 15:46:48

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com