I see no error while sending messages to nonexisting processes using process identifier(pid), but when I send a message to a registered process that is nonExisting, I get an error.
Could someone explain what happens in both cases?
At first, case, why it is allowed to send messages to non-existing processes?
1 Like
why it is allowed to send messages to non-existing processes?
When using distributed Erlang/Elixir, it is very hard/impossible to know if the process on another node is alive or not. Also, that information is not very useful as the process may die a nanosecond after the message is delivered, so there are not that many useful conclusions you could draw from that information.
when I send a message to a registered process that is nonExisting, I get an error.
This is an unfortunate design mistake done a long time ago in Erlang. If we had designed the language today, sending to a non-registered name would behave the same as sending to a non-existing process. I don’t know why the original design was made the way it was. There is too much code relying on this behaviour for it to be changed now.
9 Likes