Chris Pressey <>
Sun Mar 23 20:55:22 CET 2003

On Fri, 21 Mar 2003 16:22:12 +0100 (MET)
Peter H|gfeldt <> wrote:

> On Feb 1, 1997 I wrote the following, addressed to the OTP developing
> team. I think it is still valid. 
> [...]
>         Put the register/2 part in the Module:init function, so that
>         the newly created process fails (and terminates if properly
>         programmed) if the name is already registered. Then there 
>         will be at most one process doing 'the thing'.

Wow, six years...

This got me thinking.  Although this may sound a bit harsh - isn't
register/2 perhaps a design flaw?  If it were register/1, and always
applied to self(), it would force you code process registration this way,
by the newly created process.

Is there ever a truly convincing reason to register a process that isn't

> [...]
> Concurrency is more difficult than you believe."

I believe it :)

I was wondering if there's a similar case when a process dies.  Is there a
way to absolutely ensure that a process'es mailbox is empty before it
dies?  Especially if more than one process is sending messages to the
process.  Example:

  server() ->
      {Pid, Data} ->
        Reply = do_stuff(Data),
        Pid ! Reply,
      shut_yourself_down ->
        % --> mightn't we get another message right here?
        % --> if we do, the sender will never get a reply


More information about the erlang-questions mailing list