专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Erlang

[Erlang]link历程信号详解

发布时间:2011-06-29 17:48:26 文章来源:www.iduyao.cn 采编人员:星星草
[Erlang]link进程信号详解
原创文章,转载请注明出处:服务器非业余研究http://blog.csdn.net/erlib 作者Sunface
联系邮箱:cto@188.com

估计很多同学都会对link时各种信号及捕捉机制有点迷糊,我这边在画一个表格,特分享给大家

ReasonTrapping exits (trap_exit = true)Not trapping exits (trap_exit = false)
normalReceives {'EXIT', Pid, Normal}Nothing happens
killTerminates with reason killedTerminates with reason killed
OtherReceives {'EXIT', Pid, Other}Terminates with reason Other

假如有A,B两个进程且彼此link
1.当A的结束原因是normal时(进程正常执行完就是normal),B是不会退出的,此时link机制不发生作用
2.若A的结束原因是killed,例如调用exit(PidA,kill) ,则无论B是否有设置trap_exit,B都会terminate,此时退出信号捕捉机制是无效的
3.若A的结束原因不是normal也不是killed(例如exit(PidA,Reason)),那么B在设置了trap_exit时,会捕捉到退出信号,取而代之的是收取到一条消息{‘EXIT’,Pid,Reason},这时B不会结束,用户可以根据收到的消息对A进程的结束进行处理;若B没有设置trap_exit,B就会terminate

希望大家能把这些关系理清,在构建系统时,这些内在关系是非常重要的,希望每个人都能设计出层次清晰,耦合度合理的优秀架构
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: