Comprueba si una operación específica de envío o de recibimiento se ha completado.
Es una función local que comprueba si la operación especificada por parámetros ha terminado. En caso afirmativo, devolverá verdadero y se rellenará el parámetro status con toda la información relevante sobre el mensaje (Véase MPI_STATUS) y el parámetro de entrada request  quedará con valor MPI_REQUEST_NULL. En otro caso, se devolverá un valor falso (o 0), entonces el parámetro de entrada request  no se modifica y el parámetro de salida status tendrá un valor desconocido.
	En el siguiente ejemplo, podemos ver cómo después de comenzar el recibo de un mensaje muy grande, trabajamos en un bucle y comprobamos de mientras si se ha recibido o no. En caso afirmativo, se termina el bucle y se trabaja con los datos. 
	
    
 int main(int argc, char *argv[])
{
    int rank, size;
    int *mensaje;
    MPI_Request request;
    MPI_Status status;
    MPI_Init(&argc, &argv); // Inicializamos las hebras
    MPI_Comm_size(MPI_COMM_WORLD, &size); // Obtenemos el numero total de hebras
    MPI_Comm_rank(MPI_COMM_WORLD, &rank); // Obtenemos el valor de nuestro identificador
 
    mensaje = new int[50000];
    if(rank == 1)
         MPI_Irecv (mensaje, // Buffer de recibo
               50000,  // Numero de elementos a recibir en el buffer
               MPI_INT, // Tipo de cada elemento
               0, // Rank del proceso origen
               1, // Etiqueta
               MPI_COMM_WORLD, // Comunicador utilizado
               &request); // Datos de la operacion
    bool recibido = false;
    int flag;
    while(!recibido){
        ...
        MPI_Test (&request, // Datos que identifican a la operacion
                  &flag, // Entero que indica si se ha terminado
                  &status); // Datos del mensaje en caso positivo
        if(flag == 1) // Se ha recibido el mensaje
            recibido = true;
        ...
    }
    ...
    // Utilizamos los datos recibidos
    ...
    MPI_Finalize();
    return 0;
}