Server handling lots of connections ...
Sat Apr 22 11:40:14 CEST 2006
Den 2006-04-22 02:45:08 skrev Jérémie Lumbroso"" <>:
> I've seen an astute programmer have the start/1 function create a thread
> and register it using the atom created by:
> list_to_atom("serverProcess_" ++ integer_to_list(Port)).
> However I've also read that creating atoms like that is not good. Is
> there something more idiomatic?
1) In the example above, you're creating an atom from a
finite (in practice) namespace. The BIF list_to_existing_atom/1
can increase safety somewhat in this case.
2) The proc utility (in jungerl) has semantics similar to
the local process registry, but allows you to register
any term. There are of course some drawbacks, for example
that you can't quite as transparently send a message to
a process registered in this fashion (it works more like
global, in that you get to call proc:send(Alias, Msg))
3) You can of course use global in the same way as proc.
If you have only one node, global will effectively
work like a local process registry. Both global and
proc allow you to register a process using any term,
and also to register more than one alias per process.
Global is, of course, a standard OTP module. Proc isn't.
More information about the erlang-questions