`

erlang简单实现生产者消费者

 
阅读更多
-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

并列的语句之间写 , 

不注意就会写错

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics