Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈独立的局部变量独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。

协同程序可以理解为一种特殊的 线程,可以暂停和恢复其执行,从而允许非抢占式的多任务处理。

函数 功能
coroutine.create(func) 创建一个协程,并传入一个函数(function),返回的是创建的协程,创建后的协程会进入挂起状态。
coroutine.resume(co[,…]) 启动协程,传入要启动的协程和协程函数需要的参数(当不是第一次启动时,参数是作为上次挂起的返回值),返回的是是否正常启动协程(boolean)和被挂起时yield传来的参数或是函数的返回值。
coroutine.yield(…) 挂起正在运行的协程,传入的参数会作为上一次resume启动的返回值,而yield挂起的返回值是下一次resume启动传入的参数。
coroutine.status(co) 查看协程当前状态,suspended–挂起,running–运行中,dead–结束
coroutine.warp(func) 创建一个协程,并传入一个函数(function),返回的是传入的函数,创建后的协程会进入挂起状态。唤醒该协程只需调用返回的协程函数即可。(该线=协程无法使用coroutine.status())
coroutine.runnning() 返回正在运行协程的线程号