Un'alternativa - che potrebbe (o non potrebbe) applicarsi al caso è quella di utilizzare il comportamento gen_event.
NEGAZIONE
dico "potrebbe" perché dipende da ciò che i vostri "lavoratori" fare il vostro caso specifico. Se sei interessato al contenuto delle loro risposte, potresti preferire di non usare questo approccio, ma nel caso sei interessato solo al fatto che tutti i lavoratori hanno completato i loro compiti - ad esempio i processi di lavoro eseguono qualche calcolo pesante e memorizza il loro risultato parziale su un database, quindi sei pronto per combinare i parziali - gen_event potrebbe essere la strada da percorrere.
FINE DELLA NEGAZIONE
Quindi ...
In OTP, un gestore evento è un oggetto denominato a quali eventi possono essere inviati.
Gli eventi sono messaggi.
Nel gestore eventi, vengono installati zero, uno o più gestori di eventi. Quando il gestore eventi riceve una notifica su un evento, l'evento verrà elaborato da tutti i gestori di eventi installati.
Quindi, in pratica, invece di avere un supervisore e più lavoratori, si ha un gestore di eventi e diversi gestori di eventi.
È quindi possibile utilizzare la funzione gen_event:sync_notify/2:
sync_notify è sincrono, nel senso che restituisca ok dopo l'evento è stato gestito da tutti i gestori di eventi.
Per ulteriori informazioni sul * * gen_event guardare here e there.
fonte
2011-09-22 13:15:56