是否可以在应用程序中级联主管?
E.g。主管sup1
产生了一个创建主管sup2
的儿童过程?
答案 0 :(得分:7)
您可能希望将孩子添加为主管。
这是主管孩子的childspec中的条目。孩子的“类型”可以设置为“主管”:
http://www.erlang.org/doc/design_principles/sup_princ.html#spec
也许你可以通过孩子自己创办一个主管来做到这一点,但它至少不那么优雅,你不太明白你在做什么。
HTH, 小时。
答案 1 :(得分:3)
是的,您可以简单地将主管添加为主管的子女。或混合搭配。我通常做这样的事情:
(在我的高层主管)
init([]) ->
Args = [],
ModuleArray = [get_info(Module, Args)
|| Module
<- [emx_nodestate, emx_sup_data, emx_sup_util, emx_sup_api,
emx_flow]],
{ok, {{one_for_one, 3, 1}, ModuleArray}}.
get_info(Module, Args) ->
{Module, {Module, start_link, [Args]}, permanent, 10000,
worker, [Module]}.
然后像emx_sup_data(行为主管)这样的东西包含:
init([]) ->
Args = [],
ModuleArray = [get_info(Module, Args)
|| Module <- [job_housekeep]],
{ok, {{one_for_all, 3, 1}, ModuleArray}}.
get_info(Module, Args) ->
{Module, {Module, start_link, [Args]}, permanent, 10000,
worker, [Module]}.
和emx_nodestate(behavior gen_server)
之类的东西init([]) ->
{ok, #state{status=starting, interested=[]}}.
像梦一样......!
答案 2 :(得分:2)
要了解其他人如何构建他们的应用程序,为什么不启动shell并运行工具栏:
toolbar:start()
这为您提供了主管层次结构的图形视图。快速查看内核管理器树,或者mnesia或yaws,将向您显示“正常”主管树的外观。
您组成由应用程序主管监督的子系统的应用程序。每个子系统可以是子系统管理员下的许多子子系统(继续以递归功能方式应用模式,直到你的粒度用完为止......)