设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 20705|回复: 0
打印 上一主题 下一主题

进程和并发 的细节

[复制链接]
跳转到指定楼层
楼主
发表于 2015-2-13 02:38:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  首先要说的就是当你要注册一个进程时应该用它模块的名字注册,原因一 :可以更快地找出故障的位置
二:是由于基元使用的存储空间是不被回收的,因此要避免动态创建基元,这会导致内存泄露。

  在循环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.
  这样做只是单单一直等待到收到你想要的回复才停止;就像锁机制,一个文件被锁,只有得到解锁消息才会是状态
开放,让其他进程能有处理这个文件!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Erldoc.com  

GMT+8, 2024-11-23 17:34 , Processed in 0.366968 second(s), 10 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表