以下是关于 Lua 协同程序的一些基本概念和使用方法:
创建协同程序
-- 创建协同程序
local co = coroutine.create(function ()
print("Coroutine is running")
end)
启动和恢复协同程序
-- 启动协同程序
coroutine.resume(co) -- 输出 "Coroutine is running"
协同程序状态
-- 获取协同程序状态
local status = coroutine.status(co)
print(status) -- 输出 "dead",表示协同程序已经运行完毕
传递参数
-- 传递参数给协同程序
local co = coroutine.create(function (x, y)
print(x + y)
end)
coroutine.resume(co, 10, 20) -- 输出 "30"
协同程序的挂起与恢复
-- 协同程序的挂起与恢复
local co = coroutine.create(function ()
print("Coroutine is running")
coroutine.yield() -- 挂起协同程序
print("Coroutine is running again")
end)
coroutine.resume(co) -- 输出 "Coroutine is running"
coroutine.resume(co) -- 输出 "Coroutine is running again"
多个协同程序
-- 多个协同程序
local co1 = coroutine.create(function ()
print("Coroutine 1 is running")
end)
local co2 = coroutine.create(function ()
print("Coroutine 2 is running")
end)
coroutine.resume(co1) -- 输出 "Coroutine 1 is running"
coroutine.resume(co2) -- 输出 "Coroutine 2 is running"
协同程序提供了一种轻量级的并发机制,可以用于在程序内部实现协同任务,而不需要创建额外的线程。协同程序的使用需要谨慎,避免因为不当的设计导致死锁或其他并发问题。
转载请注明出处:http://www.zyzy.cn/article/detail/13705/Lua