一天三盒半 发表于 2026-5-27 14:17:16

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]
查看完整版本: Lua 高级教程——协程(Coroutine):轻量级并发