Erlang中文论坛
标题:
OTP行为模式
[打印本页]
作者:
high佬全
时间:
2015-2-10 00:17
标题:
OTP行为模式
前面讲到了通用服务器,这次就说下 监控进程。工作进程包括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),进行监控
欢迎光临 Erlang中文论坛 (https://bbs.erldoc.com/)
Powered by Discuz! X3.3