Erlang中文论坛

标题: 进程和并发 的细节 [打印本页]

作者: high佬全    时间: 2015-2-13 02:38
标题: 进程和并发 的细节
  首先要说的就是当你要注册一个进程时应该用它模块的名字注册,原因一 :可以更快地找出故障的位置
二:是由于基元使用的存储空间是不被回收的,因此要避免动态创建基元,这会导致内存泄露。

  在循环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.
  这样做只是单单一直等待到收到你想要的回复才停止;就像锁机制,一个文件被锁,只有得到解锁消息才会是状态
开放,让其他进程能有处理这个文件!





欢迎光临 Erlang中文论坛 (https://bbs.erldoc.com/) Powered by Discuz! X3.3