2012-03-19 123 views
0

我想開始幾個過程作爲給定主管的子女。重啓策略是one_for_one根據我的需要,每一個終止的進程應該在給定的時間量(例如20秒)後重新啓動。erlang監督員重新啓動策略

這怎麼辦?也許延遲在初始化或在終止功能的組合:

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

有沒有更好的方式來實現這一目標?

回答

3

請勿爲此使用init/1。當init運行時,主管被阻塞。最好立即啓動這個過程,但是隻有等待20秒後才讓它自己註冊。您可以在init中使用簡單的erlang:send_after(..)調用來觸發此啓動延遲。

我也不喜歡終止的事情。也許有一個關閉狀態,在終止之前,你會停留一段時間。這也許可以確保沒有別人跑你在做什麼。如果你正在控制何時關閉,我會建議你。只需進入該狀態,然後等待上述的定時器觸發。但請注意,此解決方案僅在寬限期後釋放外部資源(文件,ETS表,套接字) - 除非明確釋放。