Lua —— 协同程序 Coroutine

247 阅读1分钟

一、协程的创建

方法一: create (常用方式)

co1 = coroutine.create(fun)  //本质是一个线程对象  type(co1) = thread

方法二:wrap

co2 = coroutine.wrap(fun)  //type(co2) = function

二、协程的运行

方法一:resume调用 (create 创建的协程)

coroutine.resume(co1)  

方法二:直接调用 (wrap 创建的协程)

co2()     //co2是一个方法,直接调用即可 

三、协程的挂起

coroutine.yield() 可以有返回值

//demo
func = function()
    local i = 1
    while true do
        print(i)
        i = i + 1
        coroutine.yield()
    end
end

co = coroutine.create(func)
//lua代码从上到下一次执行,想要多次执行协程,就需要写多遍
coroutine.resume(co);
coroutine.resume(co);


输出结果: 1   2

四、协程的状态

coroutine.status(协程对象)

  • dead:结束
  • suspended: 暂停
  • running: 进行中