Communication between concurrent processes: Message passing vs. rendezvous communication

Message passing (like in SDL/UML state diagrams): based on basic communication functions provided by networks (data over TCP connections), or operating systems (Unix pipe).

Rendezvous: Around 1980, Milner proposes the CCS modeling formalism for systems with concurrency, and Hoare proposes a programming language CSP with concurrent processes communicating by rendezvous-input-output interactions. Whether an interaction is accepted depends on the state of the process. The process may be non-deterministic.

Rendezvous leads to more simple models (there is only one transition, simultaneously for both components). With message passing there are two transitions (first sending, later reception).

ADA (a language for embedded systems - 1980) includes process communication by rendezvous.

Rendezvous communication is difficult to implement within a distributed environment.