--消费者驱动,协同程序实现管道过滤器
function receive(prod)--启动协程,获取返回值
local status,value=coroutine.resume(prod)
return value
end
function send(x)--返回新值并挂起
coroutine.yield(x)
end
function producer()--创建协程返回读取的值
return coroutine.create(function()
while true do
local x=io.read()
send(x)
end
end)
end
function filter(prod)--创建协程对值进行处理并返回
return coroutine.create(function()
for i=1,math.huge do
local x=receive(prod)--开启生产者协程
x=string.format("%5%s",i,x)
send()
end
end)
end
function consumer(prod)
while true do
local x=receive(prod)--开启过滤器协程
io.write(x,"\n")
end
end
consumer(filter(producer()))
lua协同程序实现管道过滤器
最新推荐文章于 2022-09-21 10:41:58 发布