基本语法
方法 | 描述 |
---|---|
coroutine.create() | 创建 coroutine,返回 coroutine, 参数是一个函数,当和 resume 配合使用的时候就唤醒函数调用 |
coroutine.resume() | 重启 coroutine,和 create 配合使用 |
coroutine.yield() | 挂起 coroutine,将 coroutine 设置为挂起状态,这个和 resume 配合使用能有很多有用的效果 |
coroutine.status() | 查看 coroutine 的状态。注:coroutine 的状态有三种:dead,suspended,running,具体什么时候有这样的状态请参考下面的程序 |
coroutine.wrap() | 创建 coroutine,返回一个函数,一旦你调用这个函数,就进入 coroutine,和 create 功能重复 |
coroutine.running() | 返回正在跑的 coroutine,一个 coroutine 就是一个线程,当使用running的时候,就是返回一个 corouting 的线程号 |
注:在任一指定时刻只有一个协同程序在运行
定义一个协同程序
定义 coroutine (方法一:使用 coroutine.create)
coroutineName= coroutine.create(
function(i)
print(i);
end
)
-- 开启 coroutine
coroutine.resume(coroutineName, 1)
-- 查看 coroutine 的状态
print(coroutine.status(coroutineName))
-- 输出结果: 1 .. dead
定义 coroutine (方法二:使用 coroutine.wrap)
coroutineName= coroutine.wrap(
function(i)
print(i);
end
)
-- 开启 coroutine
coroutineName(1)
-- 输出结果: 1
暂停coroutine 使用 coroutine.yield()
coroutineName= coroutine.create(
function(i)
print(i);
coroutine.yield();
print(i + i);
end
)
-- 开启 coroutine
coroutine.resume(coroutineName, 1)
-- 查看 coroutine 的状态
print(“暂停了!”)
-- 重启 coroutine
coroutine.resume(coroutineName)
-- 输出结果:1 .. 暂停了!.. 2
coroutine 返回值
coroutineName= coroutine.create(
function(i)
print(i);
-- 暂停时,可以返回coroutine返回值
coroutine.yield(i);
print(i + i);
-- 结束时,也可以返回coroutine返回值
return i + i;
end
)
-- 开启 coroutine
res = coroutine.resume(coroutineName, 1)
print(res)
-- 查看 coroutine 的状态
print("暂停了!")
-- 重启 coroutine
res = coroutine.resume(coroutineName)
print(res)
-- 输出结果: 1 .. 1 .. 暂停了!.. 2 .. 2
网友评论