Non-blocking operations return (immediately) ``request handles'' that can
be waited on and queried:
MPI_Isend(start, count, datatype, dest, tag, comm, request)
MPI_Irecv(start, count, datatype, dest, tag, comm, request)
MPI_Wait(request, status)
One can also test without waiting: MPI_Test( request, flag, status)