一、协程的创建
方法一: 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: 进行中