A receive call that uses source and tag values returned by a preceding
call to MPI_PROBE or MPI_IPROBE will receive the
message matched by the probe call only if there was no other matching
receive
after the probe and before that receive. In a multithreaded
environment, it is up to the user to enforce this condition using
suitable mutual exclusion logic.
This can be enforced by
making sure that each communicator is used by only one thread on each
process.
MPI-Standard for MARMOT