加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua协程

发布时间:2020-12-14 22:27:31 所属栏目:大数据 来源:网络整理
导读: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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读