本篇作为Lua学习笔记之一记录有關Lua协程的相关知识点,本篇内容将会很浅显仅仅是对不了解协程知识的一个入门级学习,想要深入的同学可以跳过
(1)什么是协程 (摘自菜鸟教程)
拥有独立的堆栈,独立的局部变量独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西
(2)与线程的区别 (摘自菜鸟教程)
一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行在任一指定时刻只有一個协同程序在运行,并且这个正在运行的协同程序只有在明确的被要求挂起的时候才会被挂起协同程序有点类似同步的多线程,在等待哃一个线程锁的几个线程有点类似协同
(3)方法 (摘自菜鸟教程)
创建 coroutine,返回 coroutine 参数是一个函数,当和 resume 配合使用的时候就唤醒函数调用 |
創建 coroutine返回一个函数,一旦你调用这个函数就进入 coroutine,和 create 功能重复 |
我们可以通过create来创建一个协程create的参数是一个函数,create返回的是一个thread我們可以通过resume来调用这个thread来执行我们通过create创建的协程,如下述代码所示:
当一个协程运行后我们是没有办法从外部将其停止的,只有在协程内部通过yield可以将协程挂起或者称之为暂停,如下代码所示:
与此同时当一个协程被挂起后,我们可以继续通过resume再次调用thread来继续执行協程后续的内容代码如下述所示:
上述基本就是协程所有的内容了,下面我们说一下wrap方法wrap方法和create相似,同样是创建一个协程和create不同嘚是wrap返回的不是一个thread而是一个函数本身,通过wrap创建的协程我们不再通过resume来调用和恢复,而是直接通过调用返回的函数本身来实现挂起和恢复代码如下所示:
若是觉得博主的文章写的不错,不妨关注一下博主点赞一下博文,另博主能力有限若文中有出现什么错误的地方,欢迎各位评论指摘