MessagePassingInterface (MPI) is a standard for message passing between tasks running on one or more processors. See http://www-unix.mcs.anl.gov/mpi/ for more information. There are several implementations of this standard even for e.g. Linux. There are language implementations for the CeeLanguage, FortranLanguage and RubyLanguage (MPI Ruby at http://www-unix.mcs.anl.gov/mpi/mpi_ruby/).
There is an object oriented CeePlusPlus binding - see ObjectOrientedMessagePassingInterface.
Books
Compare with ParallelVirtualMachine, OpenMultiProcessing (OpenMP)
See also InterProcessCommunication, ParallelProgrammingModel
See CudaMpi for an extension to cover data transfer between GeneralPurposeGraphicsProcessUnits (GPGPUs) using the ComputeUnifiedDeviceArchitecture (CUDA).