我有一個稱爲「monitor_node」的進程層次結構。每個monitor_node都由一位主管監督。主管孩子VS平原spawn_link
現在,每個節點都可能具有複雜的內部結構。意思是說,它可能(或不可能)有一些子過程需要它來正常運行。例如:進程發送保持活動消息。到目前爲止,我一直在使用簡單的spawn_link來創建這些「內部」進程 。但是,我已經意識到,在monitor_node(正在監督)的init函數中產生它們有時會導致此函數失敗(並因此導致整個管理器樹失敗)。我的問題是:將這些內部流程附加到主管樹是否是一個好的解決方案?我正在考慮將monitor_node更改爲監督其內部流程的主管。
我的疑惑是:
我會監督非常小的過程相當顯著數量。我不確定這是否是一種好的做法。
我可能事先並不知道給定的「內部」過程是一個簡單的過程或具有一些內部結構(也衍生出其他過程)。如果後者是這種情況,那麼我可能應該將這些「內在」進程附加到主管樹上。
我希望我沒有太困惑你。期待一個答案。
編輯:
一個非常類似的(如果不相同)的問題是討論here(3後)。給出的解決方案與我給出的答案相同。
感謝您的回答!我認爲'attach_pool_sup'將負責監督我在我的問題中寫過的「內部」過程? – gregorej 2011-05-17 09:00:06
是的,這是正確的猜測:) – 2011-05-21 19:46:43
好的。因此,在這種情況下,我的'monitor_node:init'函數必須爲每個內部進程調用'attached_pool_sup'上的'supervisor:start_child'。我對嗎?如果是的話,是不是會再次使'init'函數複雜化? – gregorej 2011-05-26 09:24:44