MPI_Rsend is a standard blocking send; it will block until the recipient has received the message. The difference with MPI_Send is the 'R' which stands for ready; this routine requires the recipient to have issued the corresponding receive routine (MPI_Recv or MPI_Irecv) before MPI_Rsend is invoked. This particularity may improve performance by saving the time normally spent hand-shaking with the receiving MPI process (since the receiver is already ready to receive the message). An MPI_Rsend has the same semantics as MPI_Send; it will decide whether to use the synchronous or asynchronous mode using the same decision flow that MPI_Send. As a blocking send, MPI_Rsend guarantees that the buffer passed can be safely reused once MPI_Rsend returns. Other blocking sends are MPI_Send, MPI_Ssend and MPI_Bsend. Refer to MPI_Irsend to see the non-blocking counterpart of MPI_Rsend.