Lua编程示例(八):生产者-消费者问题(编程实现生产者消费者模式)速看

随心笔谈3年前发布 admin
203 0 0

文章摘要

文中代码展示了Erlang语言中协程的使用,具体包括以下内容: 1. **receive** 函数:负责接收协程暂停时的数据,打印相关信息。 2. **send** 函数:将数据传递给暂停的协程,打印相关信息。 3. **producer** 函数:创建并返回一个协程,该协程不断读取输入并将其通过send函数发送到prod协程。 4. **filter** 函数:创建并返回一个协程,该协程从prod协程接收数据并进行格式化处理后重新发送。 5. **consumer** 函数:接收数据并打印相关信息,同时将数据写入文件。 文中通过`producer`, `filter`, `consumer`三个协程的协同工作,展示了如何在Erlang中实现数据的生产、处理和消费流程。


function receive(prod)
print(“receive is called”)
local status,value=coroutine.resume(prod)
return value
end

function send(x,prod)
print(“send is called”)
return coroutine.yield(x)
end

function producer()
return coroutine.create(function ()
print(“producer is called”)
while true do
print(“producer run again”)
local x=io.read()
send(x)
end
end)
end

function filter(prod)
return coroutine.create(function ()
for line=1,1000 do
print(“enter fliter “..line)
local x=receive(prod)
print(“receive in filter finished”)
x=string.format(“%5d %s”,line,x)
send(x,prod)
end
end)
end

function consumer(prod)
print(“consumer is called”)
while true do
print(“consumer run again”)
local x=receive(prod)
print(“retrun customer”)
io.write(x,”\n”)
end
end

p=producer()
f=filter(p)
consumer(f)

© 版权声明

相关文章