一、概述
1、协程的四种状态
使用coroutine.status(co)来查询协程co当前的状态
- 挂起(suspended):协程刚刚创建时,协程使用coroutine.yield()把自己挂起
- 运行(running)
- 正常(normal):协程A唤醒协程B是,B的状态为运行,A的状态为正常
- 死亡(dead)
二、协程基础
1、创建一个协程
co = coroutine.create(function() print(123) end)
使用coroutine.create创建协程,返回值是一个thread数据类型。
2、启动协程
coroutine.resume(co)
返回值
正确执行,返回true和协程运行的返回值
错误执行(协程是dead状态),返回false和错误信息
3、协程的挂起
在协程内部使用coroutine.yield()会把协程挂起,当再次调用启动协程时会自动运行,到下一个yield。
4、协程参数的传递
协程创建之后,第一次调用resume的时候可以传递参数。
add = coroutine.create(function(...)
local total = 0;
for _, value in ipairs({ ... }) do
total = total + value;
end
print(total)
end)
coroutine.resume(add, 1, 2, 3, 4, 5, 6)
留言