Processo de gerente de eventos em Erlang. Processos nomeados ou PIDs?
Pergunta
Eu tenho o processo do gerenciador de eventos que despacha eventos para os assinantes (por exemplo, http_session_created, http_ssion_destroyed). Se o PID for usado em vez do processo nomeado, devo colocá -lo em funções para operar com o gerenciador de eventos, mas se o processo nomeado for usado, o código será mais claro.
Qual variante está certa?
Obrigada!
Solução
Embora não haja diferença real no processo de nomeação de um processo, registrá -lo, o torna global. Você está dizendo ao sistema que aqui está um serviço global que qualquer um pode usar.
De sua descrição, mais parece que você está dando a eles nomes para salvar o pequeno esforço de carregá -los em seu loop. Se for esse o caso, eu colocaria seus PIDs em um registro com todos os outros dados do estado que você carrega. Isso indica muito melhor o tipo de processos.
Outras dicas
Se você tiver um conjunto fixo de processos "assinantes", use nomes registrados IMO.
Se, pelo contrário, você tiver um tipo de arquitetura de publicação/inscrição em que os assinantes vêm e vêm, precisará de uma infraestrutura para rastrear isso e, a partir deste momento, isso realmente não importa se você usar PID () ou nomes.
Uma das desvantagens do uso de nomes registrados é que você precisa rastreá -los na sua base de código para evitar "colisões". Portanto, depende de você: pessoalmente, eu tendem a favorecer processos nomeados como, como você diz, torna a leitura mais clara do código. De uma maneira ou de outra, o OTP não se importa.