addressing a lot of processes
Ulf Wiger
ulf@REDACTED
Sun May 22 10:55:06 CEST 2005
Den 2005-05-22 00:35:22 skrev Sean Hinde <sean.hinde@REDACTED>:
> One common solution is to maintain a named protected ets table of IP
> Addr -> Pid. Looking up in an ets table is pretty much the same as
> looking up in an "erlang internal table", and the calling process can do
> it directly:
>
> case ets:lookup(mapper, {127,0,0,1}) of
> [{_, Pid}] ->
> Pid ! { processNewData, SomeData };
> [] ->
> Pid = createAndRegisterNewProcess({127,0,0,1}), %% This
> should make a call to the ets table owning process to insert the new
> entry
> Pid ! { processNewData, SomeData }
> end
>
> OTOH if you know you will have a bounded set of IP addresses then your
> atom scheme is OK also
>
> Sean
In a previous post:
http://forums.trapexit.org:81/phpBB/viewtopic.php?t=3572
I mentioned a process registry that's available in Jungerl.
It allows you to register any erlang term to a process,
have multiple registered names for a single process, and
also register shared names, e.g. in order to address process
as a group. There are also functions to fold over a set of
registered processes. Performance is quite good, and I think
you'd need to have some pretty heavy performance requirements
not to afford it, esp. considering the advantages it brings
in debugging and programming ease.
/Uffe
More information about the erlang-questions
mailing list