[erlang-questions] Sending message to process already listening on a socket

David Hopwood david.hopwood@REDACTED
Wed Aug 1 02:49:26 CEST 2007


Ben Hood wrote:
> Thanks for you help.
> 
> On 7/31/07, Matthias Lang <matthias@REDACTED> wrote:
>> 1. Yes, messages are queued up until consumed.
> 
> I've been wondering about the formal semantics of erlang message
> passing.

It is 1-1 FIFO; that is, messages are queued in FIFO order between
any given pair of processes, but there are no other constraints on
ordering. For a formal definition of 1-1 FIFO, see Definition 3.3
in:

  Bernadette Charron–Bost, Friedemann Mattern, Gerard Tel
  "Synchronous, asynchronous, and causally ordered communication"
  Distributed Computing (1996) 2:173--191, Springer-Verlag.
  <http://www.vs.inf.ethz.ch/publ/papers/mattern-dc-1996.pdf> or
  <http://citeseer.ist.psu.edu/24411.html>

(that paper just calls it "FIFO").

A brief explanation, so you don't necessarily have to read the
whole paper: a pair (s, r) represents a message transmission where
s is the send event, and r is the receive event. So Definition 3.3
says that if two messages are sent by the same process (s ~ s') and
received by the same process (r ~ r'), then they are received in
the same order they were sent (s < s' => r' < r').

Note that messages will be dropped if the target process dies, or
if there is a network error when a message is being sent between
nodes.

-- 
David Hopwood <david.hopwood@REDACTED>





More information about the erlang-questions mailing list