设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19392|回复: 0

OTP行为模式

[复制链接]
发表于 2015-2-10 00:17:17 | 显示全部楼层 |阅读模式
  前面讲到了通用服务器,这次就说下 监控进程。工作进程包括gen_server,gen_fsm和gen_event,而工作进程必须把自身连接到监控进程中,而监控进程就是为了监控与它连接的工作进程;当工作进程结束时,
监控进程就做出相应的行为(重启该工作进程等)

1使用start_link函数启动一个监控
  supervisor:start_link(ServerName,CallBackModule,Arguments)
  supervisor:start_link(CallBackModule,Arguments)
上面启动了CallBackModule模块中的init,但注意返回一定要以{ok,{SupervisorSpecification,ChildSpecificationLIsts}}
SupervisorSpecification(监控进程规范)--{重新启动策略,异常终止最大数量,处理时间}
   重新启动策略有:one_for_one(不影响其他进程,单独重启),one_for_all(终止所有再重新启动),rest_for_one(与
one_for_all差不多只是有顺序启动)
  异常终止最大数量和每次重启处理时间,这二者是防止无限死循环启动一个会异常结束的进程


ChildSpecificationLIsts(子进程规范)  --{Id,{Module,Function,Arguments},Restart,Shutdown,Type,Modulelists}
Id-指定Id使每次重启后都能使进程Id不变
{Module,Function,Arguments} -- 启动工作进程
Restart -- 有3个类型短暂进程(永远不重启),暂时进程(异常终止时重启),永久进程(总是重新启动);
Shutdown -- 监控主动是该进程结束,该进程能拥有多少时间作处理其他事
Type -- 指定子进程是工作进程还是监控进程
Modulist -- 包含行为包的回调模块

例如有玩家登陆,服务器中的监控就创建一个子进程(gen_server),进行监控
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-16 12:46 , Processed in 0.370003 second(s), 9 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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