erlang简单实现生产者消费者

本文介绍了一个简单的Erlang程序实现生产者-消费者模型的例子。该程序包含一个消费者进程,持续监听生产者的消息,生产者则每0.5秒发送一条消息给消费者,直至发送次数达到10次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-module(procedure).
-export([procedure/2,consume/0]).

consume() ->
 receive
   X -> 
   case X<10 of
    true ->io:format("production consume ~w~n",[X]),consume();
	false ->io:format("work done ~n") end
 end.
   

procedure(Pid,Num) when Num=<10 ->
   Pid ! Num,
   timer:sleep(500),
   procedure(Pid,Num+1);
   
procedure(Pid,Num) ->
   io:format("work done ~n").

 

erlang感觉语法蛮有意思的 就写了写 

调用:

26> c("procedure").
procedure.erl:18: Warning: variable 'Num' is unused
procedure.erl:18: Warning: variable 'Pid' is unused
{ok,procedure}
27> Pid=spawn(fun procedure:consume/0).
** exception error: no match of right hand side value <0.106.0>
28> f().
ok
29> Pid=spawn(fun procedure:consume/0).
<0.110.0>
30> procedure:procedure(Pid,0).
production consume 0
production consume 1
production consume 2
production consume 3
production consume 4
production consume 5
production consume 6
production consume 7
production consume 8
production consume 9
work donework done
ok

 

内容也很简单 一个消费者监听着 生产者每隔0.5秒发送一次信息给消费者 消费者输出 一共循环10次(参数是0的话)

 

erlang编程一些语法细节蛮蛋疼的...

比如 if receive和case中每项用的是 ; 然后最后一项不要写符号 因为后面跟了个end

并列的语句之间写 , 

不注意就会写错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值