2012-03-19 85 views
0

我想开始几个过程作为给定主管的子女。重启策略是one_for_one根据我的需要,每一个终止的进程应该在给定的时间量(例如20秒)后重新启动。erlang监督员重新启动策略

这怎么办?也许延迟在初始化或在终止功能的组合:

Shutdown = brutal_kill | integer() >=0 | infinity 

有没有更好的方式来实现这一目标?

回答

3

请勿为此使用init/1。当init运行时,主管被阻塞。最好立即启动这个过程,但是只有等待20秒后才让它自己注册。您可以在init中使用简单的erlang:send_after(..)调用来触发此启动延迟。

我也不喜欢终止的事情。也许有一个关闭状态,在终止之前,你会停留一段时间。这也许可以确保没有别人跑你在做什么。如果你正在控制何时关闭,我会建议你。只需进入该状态,然后等待上述的定时器触发。但请注意,此解决方案仅在宽限期后释放外部资源(文件,ETS表,套接字) - 除非明确释放。