Domanda

E 'possibile cascata supervisori all'interno di un'applicazione?

es. supervisore sup1 generando un processo figlio che crea un sup2 supervisore?

È stato utile?

Soluzione

Probabilmente si desidera aggiungere il bambino come supervisore.

Si tratta di una voce nel childspec di un bambino di un supervisore. Il "tipo" del bambino può essere impostato su "supervisore":

http://www.erlang.org/doc/design_principles/sup_princ .html # spec

Probabilmente si può fare tramite il bambino di iniziare un supervisore per sé troppo ma è almeno meno elegante ed è meno evidente quello che stai facendo.

HTH, h.

Altri suggerimenti

Sì, si può semplicemente aggiungere supervisori come figli di un supervisore. O mix and match. Lo faccio qualcosa di simile a questo di solito:

(nella mia top supervisore livello)

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]}.

E poi qualcosa di simile emx_sup_data (supervisore comportamento) contiene:

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]}.

e qualcosa come emx_nodestate (comportamento gen_server)

init([]) ->
    {ok, #state{status=starting, interested=[]}}.

funziona come un sogno ...!

Per vedere come altre persone strutturano le loro applicazioni Perché non si spara una shell ed eseguire la barra degli strumenti:

toolbar:start()

Che ti dà una visualizzazione grafica di una gerarchia supervisore. Un rapido sguardo alla albero supervisore del kernel, o mnesia o framboèsia, vi mostrerà ciò che un albero di 'normale' supervisore assomiglia.

Si compone un applicazione dei sotto-sistemi supervisionati da un soprintendente di applicazione. Ogni sotto-sistema può essere molte sub-sub-sistemi sotto il supervisore sotto-sistema (continuare ad applicare pattern in maniera funzionale ricorsivo fino ad esaurimento di granularità ...)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top