协程的创建
lua 协程的类型是 thread(线程)
协程的本质是一个线程对象
关键字:coroutine.create
-- 创建协程
fun = function ()
print(123)
end
--第一种协程创建方式
co = coroutine.create(fun)
--协程的本质是一个线程对象
--输出类型:地址
print(co)
-- 输出 thread
print(type(co))
--第二种协程创建方式
-- coroutine.wrap()
co2 = coroutine.wrap(fun)
--输出类型:地址
print(co2)
-- 输出 function
print(type(co2))
协程的运行
-- 对应第一种方式的协程
coroutine.resume(co)
-- 对应第二种方式的xiec
co2()
协程的挂起
--定义协程方法
fun2 = function()
local i = 1
while true do
print(i)
i=i+1
--协程的状态
print(coroutine.status(co3))
-- 这个函数可以得到当前正在 运行的协程的线程号
print(coroutine.running())
--协程挂起函数
coroutine.yield(i)
end
end
--创建协程
co3 =coroutine.create(fun2)
--默认第一个返回值 是 协程是否启动成功
--yield里面的返回值
--启动协程获得返回值
isOk, tempI = coroutine.resume(co3)
print(isOk, tempI)
--启动协程获得返回值
isOk, tempI = coroutine.resume(co3)
print(isOk, tempI)
-- 第二种方法创建协程
co4 = coroutine.wrap(fun2)
-- 这种方式的协程调用 也可以有返回值 只是没有默认第一个返回值了
print("返回值"..co4())
print("返回值"..co4())
print("返回值"..co4())
协程的状态
-- coroutine.status(协程对象)
-- dead 结束
-- suspended 暂停
-- running 进行中
print(coroutine.status(co3))
print(coroutine.status(co))
-- 这个函数可以得到当前正在 运行的协程的线程号
print(coroutine.running())
标签:协程,co,coroutine,--,语法,Lua,协同程序,print,返回值
From: https://www.cnblogs.com/Luo-Xi/p/18328789