When a caller passes a communicator (that contains a context and
group) to a callee, that communicator must be free of side effects
throughout execution of the subprogram: there should be no active
operations on that communicator that might involve the process.
This provides one
model in which libraries can be written, and work ``safely.'' For
libraries so designated, the callee has permission to do whatever
communication it likes with the communicator, and under the above
guarantee knows that no other communications will interfere. Since we
permit good implementations to create new communicators without
synchronization (such as by preallocated contexts on communicators),
this does not impose a significant overhead.
This form of safety is analogous to other common computer-science
usages, such as passing a descriptor of an array to a library routine.
The library routine has every right to expect such a descriptor to
be valid and modifiable.
MPI-Standard for MARMOT