-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
并列的语句之间写 ,
不注意就会写错