首页 > 代码库 > 生产者消费者

生产者消费者

producer =coroutine.create(function ()   --生产者    while true do        local x = io.read()  --生产新的值        send(x)              --发送给消费者    endend)function consumer()   --消费者    while true do        local x = receive() --从生产者接受值        io.write(x, "\n")   --消费新的值    endendfunction receive()    local status, value = http://www.mamicode.com/coroutine.resume(producer)    return valueendfunction send(x) --发送    coroutine.yield(x)endconsumer()


---------------------------------------------------------------------------------

 

 


function producer() --生产者
  return coroutine.create(function()
    while true do
      local x = io.read() --生产新的值
      send(x) --发送给消费者
    end
  end)
end

 

function receive(prod)
  local status, value = http://www.mamicode.com/coroutine.resume(prod)
  return value
end

function send(x) --发送
  coroutine.yield(x)
end

function filter(prod)
  return coroutine.create(function ()
    for line = 1, math.huge do
      local x= receive(prod) --获取新值
      x = string.format("%d %s", line, x)
      send(x)
    end
  end)
end


function consumer(prod) --消费者
  while true do
    local x = receive(prod) --从生产者接受值
    io.write(x, "\n") --消费新的值
  end
end

p = producer()
f = filter(p)

consumer(f)

 

 

生产者消费者