basic questions regarding message sequence guarantees...

Kris Prieb <>
Wed Apr 28 20:04:25 CEST 2004


Thanks Uffe!  That really clarifies things.

 

Kris

----------------------------------------------------------------------

 

On Fri, 23 Apr 2004 21:09:58 -0500, Kris Prieb 

 wrote:

 

> 1.) Suppose I have a process 'A' and process 'B'.  'A' sends a sequence 

> of messages to 'B'.

> 

> My understanding is that Erlang guarantees that B will receive the 

> messages from A in the order in which they were sent.

> Is this correct?

 

Yes.

 

 

> 2.) Now suppose 'B' is monitoring 'A'.  Suppose also that another process

> 'C' is monitoring 'A' and that a 'Down' message from 'A' to 'C' will 

> trigger 'C' to send a message to 'B.'

> 

> My understanding is that Erlang does _not_ guarantee that A's 'Down' 

> message to B will arrive before C's message to B.  Is this correct?

 

Correct.

 

 

> 3.) Same as 2, except that B and C are on one node, and A is on another.

> Does this change anything?

 

It doesn't change the fact that Erlang gives no guarantee regarding the

relative order of messages if they travel different routes.

 

In this particular case, I think internal scheduling aspects would

determine the order in which messages arrive to B, so it's going to

be as uncertain as in (2).

 

Now, if 'A' and 'B' where on the same node, and 'C' were on a different

node, one could venture to guess that B would always receive A's

message first. However, there is still no guarantee, and I wouldn't

base my application logic on it. If you'd change the distribution

pattern for other reasons later, your code might break in mysterious

ways.

 

/Uffe

-- 

Ulf Wiger

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20040428/2c588605/attachment.html>


More information about the erlang-questions mailing list