Mon Mar 24 09:37:36 CET 2003
On Mon, 24 Mar 2003, Vladimir Sekissov wrote:
>cpressey> > after 0 -> % nobody wants to talk to me
>cpressey> Is there a guarantee that you won't get a message right here?
>From "Concurent Programming in Erlang" p.76:
> A timeout of 0 means that the timeout will occur immediately,
> but the system tries all messages currently in the mailbox first
>If your mailbox is empty you haven't time to receive any
>other message if you exit immediately.
>I believe that mailbox scanning is atomic operation. There
>were some explanations in this list how system changes
>management policy for processes with huge mailboxes.
Mailbox scanning is an atomic operation, yes, but there is
of course still a chance that you will be scheduled out
before the exit(shutdown).
In the case of mdisp, this is not considered a problem,
since the process should only go to sleep in places where
the next message always comes through mdisp (the rule being:
it's OK for temporary processes to talk directly to each
other in transition states, but in stable state, messages
need to go through the mdisp process; alternatively, all
messages always go through the mdisp process.)
Ulf Wiger, Senior Specialist,
/ / / Architecture & Design of Carrier-Class Software
/ / / Strategic Product & System Management
/ / / Ericsson AB, Connectivity and Control Nodes
More information about the erlang-questions