Message passing is often non-blocking. This means that one process may
continue execution immediately after it has sent a message to
another. It is also sometimes synchronous. Synchronous message passing
involves no buffering, but it does require strong synchronisation
between the sender and receiver.
Message passing may or may not be reliable. If it is reliable, it is a
requirement for the underlying communications system to make sure of
this.
Message passing is appropriate to applications that are highly
sensitive to latency. One important example of this is in distributed
graphics systems, or window systems
Figure: