Erlang fine o terminare il processo

Ho erlang applicazione. In questa applicazione, ho eseguito il processo con spawn(?MODULE, my_foo, [my_param1, my_param2, my_param3]).

E pippo:

my_foo(my_param1, my_param2, my_param3) ->
  ...
  some code here
  ...
  ok.

Quando ho aperto etop vedo che questo pippo/3 funzione di stato: proc_lib:sync_wait/2

Che cerco di mettere in uscita(self(), normale) alla fine della mia funzione, ma la vedo io stesso comportamento: proc_lib:sync_wait/2 in etop.

Come posso uccidere o processo di uscita correttamente?

Grazie.

OriginaleL’autore 0xAX | 2012-01-16

2 Replies
  1. 15

    Nota che exit(Pid, Reason) e exit(Reason) fare NON fare la stessa cosa se Pid è il processo stesso. exit/1 racconta il processo corrente di uscita – dal all’interno se ti piace – mentre exit/2 invia un segnale di uscita per il processo, anche se il processo è di per sé. Così quando exit(self(), normal) in realtà si sta inviando il normal uscita del segnale a te stesso, che viene ignorato.

    In questo caso mettere il exit chiamata alla fine della funzione non dovrebbe fare alcuna differenza come automaticamente il processo di morte (con ragione normal) quando la funzione con la quale è stato avviato le estremità. Sembra che il processo è sospeso da qualche parte prima che.

    proc_lib:sync_wait/2 viene chiamata all’interno di proc_lib:start/start_link e si siede e aspetta che l’generato dal processo di proc_lib:init_ack/1/2 per restituire il valore di ritorno per iniziare. Sembra che il processo non chiama init_ack.

    OriginaleL’autore rvirding

  2. 0

    Basate su informazioni limitate che ti danno in questione, ho il sospetto che il processo non è finito ancora in esecuzione.

    Normalmente non c’è bisogno di aggiungere exit/2 per il vostro processo. Si chiude automaticamente quando la funzione ha terminato l’esecuzione.

    Probabilmente hanno una lunga chiamata in some code here che non ha terminato l’esecuzione. Mi consiglia di aggiungere le informazioni di registrazione e vedere dove si sono bloccati.

    OriginaleL’autore Daniel Luna

Lascia un commento