跳到主要内容

协程(coroutine)与迭代器

Lua 协程是用户态调度的轻量线程,常用于生成器/迭代器与异步框架。

基本用法

local co = coroutine.create(function()
for i = 1, 3 do
coroutine.yield(i)
end
end)

while true do
local ok, v = coroutine.resume(co)
if not ok or v == nil then break end
print(v)
end

迭代器模式

function gen(n)
return coroutine.wrap(function()
for i = 1, n do coroutine.yield(i) end
end)
end

for x in gen(3) do print(x) end