ensure_started

Vladimir Sekissov <>
Sun Mar 23 21:29:51 CET 2003


Good day,

cpressey> >      after 0 -> % nobody wants to talk to me
cpressey> 
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.

Best Regards,
Vladimir Sekissov

cpressey> > loop() ->
cpressey> >   receive
cpressey> >    Msg ->
cpressey> >     do_something,
cpressey> >     loop();
cpressey> >    please_die ->
cpressey> >      receive
cpressey> >        Msg -> % there are some messages, continue
cpressey> >          loop()
cpressey> >      after 0 -> % nobody wants to talk to me
cpressey> 
cpressey> Is there a guarantee that you won't get a message right here?
cpressey> 
cpressey> >        exit(shutdown)
cpressey> >      end
cpressey> >   end.
cpressey> > 
cpressey> > Best Regards,
cpressey> > Vladimir Sekissov
cpressey> 
cpressey> -Chris



More information about the erlang-questions mailing list