咱们一块儿来学lua:协程(coroutine) 二

你们好,骚气十足的额,又来了,对,今天咱们主要来学习下lua协程的用法,小伙伴们准备好小板凳,准备开车了~~~(ps:好像有点偏题了,不过不重要大家看成没看见就行(O ^ ~ ^ O))编程

协程主要函数:
函数名 入参 返回值 描述
coroutine.create() 接受单个参数,这个参数是coroutine的主函数 返回它的控制器,(一个对象为thread)的对象 建立 coroutine,返回 coroutine, 参数是一个函数,当和 resume 配合使用的时候就唤醒函数调用
coroutine.resume() 第一个参数:coroutine.create的返回值,即一个thread对象。第二个参数:coroutine中执行须要的参数,是一个变长参数,可传任意多个参数。 若是程序没有任何运行错误的话,那么会返回true,以后的返回值是前一个调用coroutine.yleld中传入的参数。若是有任何错误的话,就会返回false,加上错误信息 重启 coroutine(重启时不用再传参数),和 create 配合使用
coroutine.yield() 传入变长参数,这些参数会做为返回值被 coroutine.resume接收 返回在前一个调用coroutine.resume()中传入的参数值 挂起 coroutine,将 coroutine 设置为挂起状态,这个和 resume 配合使用能有不少有用的效果(返回参数)
coroutine.running() 返回当前正在运行的协程。若是它被主线程调用的话,会返回nil 返回正在跑的 coroutine,一个 coroutine 就是一个线程,当使用running的时候,就是返回一个 corouting 的线程号若是没有返回nil
coroutine.status() 返回当前协程的状态:有running,suspended,normal,dead 返回正在跑的 coroutine,一个 coroutine 就是一个线程,当使用running的时候,就是返回一个 corouting 的线程号若是没有返回nil

建立协程实例:函数

--建立一个协程

co = coroutine.create(

 function (str)

 print(str);

 end

)

print("当前协程状态:"..coroutine.status(co))

运行结果:学习

当前协程状态:suspended

建立协程的函数是coroutine.create,调用这个函数成功以后就会返回一个协程对象,后续咱们有关协程的操做就围绕这个对象进行。上面的例子co就是咱们协程对象。经过coroutine.status这个函数查看协程状态,咱们能够发现当前的状态是suspended挂起状态,也就是说coroutine.create只完成建立协程的动做,可是协程如今并无跑起来,否则这时候的状态就应该是running了。
为了让协程跑起来,这时候就轮到coroutine.resume这个函数大展拳脚了。咱们再来看下下面这hello world例子。(ps:人人都爱hello world 不要嫌弃博主举的例子很low啊≧◠◡◠≦✌)lua

hello world例子:.net

--建立一个协程,但尚未调用

co = coroutine.create(

 function (str)

 print(str);

 end

)

--开启协程,打印hello world!

coroutine.resume(co,"hello world!")

经过hello world这个例子咱们就能够清楚的看到协程正常运行起来了,这时候协程的状态是runnning嘛?有兴趣的童鞋能够打印出来看看,想一想看为何是这个状态。有时候我以为,学习编程,最重要的仍是你们可以多动手,多思考。否则就算我博客写得再详细,你们可以掌握的东西仍是颇有限的。just do it~~~话很少说,干就是了!线程

lua中文手册
参考文章一
参考文章二code

相关文章
相关标签/搜索