'In order to use such a machine effectively on a single task the component processors must be able to communicate and synchronize with each other'. C.A.R. Hoare
Communicating Sequential Processes, Communications of the ACM, Vol. 21 No. 8, August 1978.
For the actual purposes of design, a parallel software system can normally be described in terms of two types of software components [CG90]:
Processing components. Processing components make up the parallel software system. Their design and implementation focus on performing simultaneous operations on data.
Communication components. Communication components represent the cooperation – through exchange of data or the request for operations – between processing components. They are the linking software that allow information exchange between processing components of the parallel software system and constitute the basic elements for its coordination.
This chapter introduces some common structures used for enabling communication between and among parallel processing components. It describes communication components as design patterns, with the aim of providing parallel software designers and engineers with an overview of some common structures for software components used for communication, providing guidelines for their selection during the design stages of a parallel software system. Selection of design patterns for communication components constitutes the main objective of the ...