Lua 高级教程——协程(Coroutine):轻量级并发
协程是用户态轻量级线程,可暂停 / 恢复,无锁、开销极低,适合异步、迭代、状态机场景。1. 基础 API
[*]coroutine.create(f):创建协程(挂起)
[*]coroutine.resume(co, ...):恢复协程,传参
[*]coroutine.yield(...):暂停协程,返回值
[*]coroutine.status(co):状态(suspended/running/dead)
2. 示例:生产者 - 消费者
local producer = coroutine.create(function()
for i=1,3 do
print("生产:", i)
coroutine.yield(i)-- 暂停,返回 i
end
end)
-- 消费者
while true do
local ok, val = coroutine.resume(producer)
if not ok or coroutine.status(producer)=="dead" then break end
print("消费:", val)
end输出:
生产: 1
消费: 1
生产: 2
消费: 2
生产: 3
消费: 33. 协程 vs 线程
[*]协程:单线程内切换,无竞争、无需锁,开销小。
[*]线程:内核调度,多线程并行,有竞争、开销大。
页:
[1]