Lua协程
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() | 返回正在运行协程的线程号 |