Lua语言实现的协程是一种非对称式(asymmetric)协程,或称半对称式(semi-symmetric)协程。它提供了两种传递程序控制权的操作:一种是通过coroutine.resume重调用协程();另一种是通过coroutine.yield挂起协程并将程序控制权返回给协程的调用者。
常用函数说明
消费者驱动(consumer-driven)
如下通过这种方式实现的生产者与消费者:
function consumer()
while true do
local x=producer() -- 唤醒生产者
if(x == nil) then break end
print("Consum: ", x)
end
end
producer = coroutine.wrap( -- 返回值,类似函数,可调用
function()
for i=2,20 do
print("Produce: ", i)
coroutine.yield(i) -- 产生值,返回
end
end
)
consumer() --开启生产-消费
领取专属 10元无门槛券
私享最新 技术干货