首先要说的就是当你要注册一个进程时应该用它模块的名字注册,原因一 :可以更快地找出故障的位置
二:是由于基元使用的存储空间是不被回收的,因此要避免动态创建基元,这会导致内存泄露。
在循环receive语句中 如果收到未知消息,一是允许系统崩溃,二是处理消息将其写到日志中。原因是无
论什么时候收到一条消息,在匹配满足前,它必须遍历邮箱中的消息,但当你不匹配的消息越多,会导致
遍历时间越长。
小心对待超时设定,当你发送消息给其他进程后,等待其回复,记得设置超时限制;防止因为一直没有
收到回复而陷入假死状态。而下面这段代码
call(Message) ->
Ref = make_ref(),
resource! {request,{Ref,self()},Message},
wait_reply(Ref).
wait_reply(Ref) ->
receive
{reply,Ref,Reply} -> Reply;
{reply,_,Reply} -> wait_reply(Ref)
end.
这样做只是单单一直等待到收到你想要的回复才停止;就像锁机制,一个文件被锁,只有得到解锁消息才会是状态
开放,让其他进程能有处理这个文件!
|