means try to receive a message described by one of the patterns Message1,Message2... The process evaluating this primitive is suspended until a message which matches one of the patterns is received If a match occurs the code after the '->' is evaluated.
Any unbound variables occurring in the message reception patterns become bound if a message is received.
Message sending in non-blocking with "send and pray" semantics, that is, the sending process does not wait when sending a message and there is no guarantee of delivery of the message (you send the message and pray that it gets there!) Note that if a sequence of messages is sent between two different processes and if the messages arrive, then the order of delivery is the same as the order in which the messages were sent Any explicit synchronisation between processes must be explicitly programmed by the user.
Note that in order to send a message to a process we need to know the name of the process. recall that the syntax pid ! Msg sends the message Msg to the process Pid (this is short for process identifier) lnitially, the Pid of a process is known only to the process which creates the new process A consequence of this is that this Pid then has to be communicated to all other processes in the system which may wish to send messages to the process.
The Erlang primitive register (Atom, Pid) provides a global process name registry After evaluating register, the value of Atom may be used as an alias for Pid when sending a message.
We can demonstrate the concurrency primitives by implementing a simple client-server model of a bank transaction system Firstly we write a server process which represents the "bank