协成接口使用:
--coroutine.create() 创建coroutine,返回coroutine, 参数是一个函数,当和resume配合使用的时候就唤醒函数调用
--coroutine.resume() 重启coroutine,和create配合使用
--coroutine.yield() 挂起coroutine,将coroutine设置为挂起状态,这个和resume配合使用能有很多有用的效果
--coroutine.status() 查看coroutine的状态
--注:coroutine的状态有三种:dead,suspend,running,具体什么时候有这样的状态请参考下面的程序
--coroutine.wrap() 创建coroutine,返回一个函数,一旦你调用这个函数,就进入coroutine,和create功能重复
--coroutine.running() 返回正在跑的coroutine,一个coroutine就是一个线程,当使用running的时候,就是返回一个corouting的线程号
print(i);
end
)
--运行协程 参数是给执行函数的入参
coroutine.resume(co,1)
print("status = "..coroutine.status(co))
print("----------")
--创建协程 且返回一个函数 执行函数则进入协程
co = coroutine.wrap(
function(i)
print(i);
end
)
co(1)
print("----------")
co2 = coroutine.create(
function()
for i=1,10 do
print(i)
if i == 3 then
print(coroutine.status(co2)) --running
print(coroutine.running()) --thread:XXXXXX
end
coroutine.yield()
end
end
)
--打印1后 协程暂停了
coroutine.resume(co2)
print("---1--")
--协程继续 打印2后 协程暂停了
coroutine.resume(co2)
print("---2--")
--协程继续 等于3 打印3后 输出当前跑的协程当前状态和协程号 协程暂停了
coroutine.resume(co2)
print("---3--")
print(coroutine.status(co2)) -- suspended
print(coroutine.running())
--coroutine.create() 创建coroutine,返回coroutine, 参数是一个函数,当和resume配合使用的时候就唤醒函数调用
--coroutine.resume() 重启coroutine,和create配合使用
--coroutine.yield() 挂起coroutine,将coroutine设置为挂起状态,这个和resume配合使用能有很多有用的效果
--coroutine.status() 查看coroutine的状态
--注:coroutine的状态有三种:dead,suspend,running,具体什么时候有这样的状态请参考下面的程序
--coroutine.wrap() 创建coroutine,返回一个函数,一旦你调用这个函数,就进入coroutine,和create功能重复
--coroutine.running() 返回正在跑的coroutine,一个coroutine就是一个线程,当使用running的时候,就是返回一个corouting的线程号
co = coroutine.create(
function(i)print(i);
end
)
--运行协程 参数是给执行函数的入参
coroutine.resume(co,1)
print("status = "..coroutine.status(co))
print("----------")
--创建协程 且返回一个函数 执行函数则进入协程
co = coroutine.wrap(
function(i)
print(i);
end
)
co(1)
print("----------")
co2 = coroutine.create(
function()
for i=1,10 do
print(i)
if i == 3 then
print(coroutine.status(co2)) --running
print(coroutine.running()) --thread:XXXXXX
end
coroutine.yield()
end
end
)
--打印1后 协程暂停了
coroutine.resume(co2)
print("---1--")
--协程继续 打印2后 协程暂停了
coroutine.resume(co2)
print("---2--")
--协程继续 等于3 打印3后 输出当前跑的协程当前状态和协程号 协程暂停了
coroutine.resume(co2)
print("---3--")
print(coroutine.status(co2)) -- suspended
print(coroutine.running())
print("----------")
结果:
1 status = dead ---------- 1 ---------- 1 ---1-- 2 ---2-- 3 running thread: 006B7F68 ---3-- suspended nil ----------