lua协程

lua里面协程最大好处,是把异步过程,当作同步处理

协程是这样推导出来的:
首先,我么需要一个例程的概念,也就是函数或者过程。然后,我们会有调用和被调用这个关系。
由于结构化思想的流行,慢慢的稳定在一个例程就一个入口一个出口,调用者和被调用者是层次嵌套的关系。虽然,这个概念非常强大了,但是,这个想法明明有些概念不好表达,最好的例子就是:

一个例程,用来生成一个无穷序列,另一个例程,处理这个序列中的每一项。如果用传统的调用返回机制,这个没有办法。这时候,我们就可以设想让这两个例程协作:生成例程没生成一个,就转移到处理例程中去,处理完了以后,再转移到生成例程。这就是协程。从中可以看出,协程是那种可以多次进入多次退出的例程,每次挂起时保留与之相关的执行上下文(execution contex),下次重入将自动恢复。


Kunth曾经说过,普通例程只是协程的特例。

 

协程和线城的区别:

协程其实和线程的最大区别在于:协程采用的主动让出控制权的方式,因而协程中的的指令顺序是可以预计的;相反线程由于采用的是抢占式,导致线程的执行顺序不可知,因此存在同步的问题


协程的用途:

协程的用途最明显的地方是在某些嵌入式脚本语境中。比如网络游戏的服务端,采用lua脚本来实现任务的编写功能,当脚本需要访问某个异步的功能时,典型的方式是采用回调的方法:当异步完成是,回调脚本的一个已知的函数。这儿就给脚本的编写带来了复杂度。你可能想,如果程序执行到异步点时,跳回,当异步完成后,再回到跳回点继续执行。协程就能很好的实现着一想法。

 

http://blog.csdn.net/soloist/archive/2005/03/24/329381.aspx
Lua 5.1 参考手册协程: http://www.codingnow.com/2000/download/lua_manual.html#2.11

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值