按照书上码了下,但运行有问题,暂时不知道原因:
function send (x) coroutine.yield(x)endfunction producer() return coroutine.create( function () while true do local x = 1 send(x) end end)endfunction receive(prod) local status, value = coroutine.resume(prod) return valueendfunction filter (prod) return coroutine.create(function() a = {1,2,3,4,5,6,7,8,9,10} for line , k in pairs(a) do local x = receive(prod) x = string.format("%5d %s",line,x) send(x) end end)endfunction consumer (prod) while true do local x = receive(prod) print(x) endendconsumer(filter(producer()))
之后再来细看,主要是 producter-consumer模型。