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 unusedprocedure.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().ok29> Pid=spawn(fun procedure:consume/0).<0.110.0>30> procedure:procedure(Pid,0).production consume 0production consume 1production consume 2production consume 3production consume 4production consume 5production consume 6production consume 7production consume 8production consume 9work donework doneok
?
内容也很简单 一个消费者监听着 生产者每隔0.5秒发送一次信息给消费者 消费者输出 一共循环10次(参数是0的话)
?
erlang编程一些语法细节蛮蛋疼的...
比如 if?receive和case中每项用的是 ; 然后最后一项不要写符号 因为后面跟了个end
并列的语句之间写 ,?
不注意就会写错