[erlang-questions] On Per-module process registration
Richard O'Keefe
ok@REDACTED
Thu Feb 11 03:44:03 CET 2010
On Feb 11, 2010, at 2:47 PM, Fred Hebert wrote:
> I've been reading the EEP and trying to grasp it, but this very post
> really made me grasp what you wanted.
I'm sorry I explained it so badly in the first place.
>
> This works when you want to address a particular part of a group of
> processes from the outside, but one of the concerns I have with that
> is that the supervisor's children who need to access the registry to
> communicate between themselves then need to be aware of the
> supervisor's presence and the names which are given there. It sounds
> like an indirect circular dependency Erlang programs could do without.
Oh, agreed. But the circularity _exists_. Do it with a dynamically
created registry (should such a thing exist), and
- the processes have to know about the registry
- the registry exists to know about the processes
In other contexts I've resorted to
Pids = spawn a bunch of new processes,
Info = some information derived from them that they
need to share,
[Pid ! {info,Info} || Pid <- Pids]
where the first thing each new process does is
receive {info,Info} -> ...
For example, set up a grid of processes, then tell each process
what its neighbours are (West -> East, but also West <- East).
Indirection is the only way we _can_ break cycles in Erlang.
Of course cycles are always something to beware of.
More information about the erlang-questions
mailing list