Tecnologia / Artigos / Erlang /
Dica rápida: spawn e self

Cléber

* Date: 2014-12-14 12:34:56 * Modified: 2018-11-30 22:30:30 ----- Pode parecer um erro idiota (e talvez seja mesmo), mas acredito ser bem comum, especialmente quando você está começando com Erlang: chamar self/0 logo depois do spawn, pensando que está referindo-se ao processo pai. Exemplo: ```erlang funcao_pai() -ᐳ faz_algo(), spawn( fun() -ᐳ funcao_filha(self()) end ). ``` É fácil de você se confundir e começar a pensar no processo novo a partir da execução de funcao_filha/1, isto é, a partir da entrada em seu escopo. Engano! O escopo do novo processo é a fun/0 que foi chamada pela spawn/1. Consequentemente, aquela chamada a self/0 não retorna o PID do processo pai (execução em funcao_pai/0), mas o PID do processo filho (execução já na fun/0). Quando você está no meio de um “ímpeto programadorístico”, essa coisa óbvia pode passar desapercebida. Fica a dica. :)

Curti

46 visitantes curtiram esse Item.

Anterior: Kerl: o virtualenv do Erlang | Próximo: Artigos / O caráter perigoso dos dados de "analytics"