#include "mpi.h"
#include <stdio.h>
 
int main(int argc, char *argv[])
{
    int myid, numprocs, left, right, flag=0;
    int buffer[10], buffer2[10];
    MPI_Request request;
    MPI_Status status;
 
    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
    MPI_Comm_rank(MPI_COMM_WORLD, &myid);
 
    right = (myid + 1) % numprocs;
    left = myid - 1;
    if (left < 0)
        left = numprocs - 1;
 
    MPI_Irecv(buffer, 10, MPI_INT, left, 123, MPI_COMM_WORLD, &request);
    MPI_Send(buffer2, 10, MPI_INT, right, 123, MPI_COMM_WORLD);
    MPI_Test(&request, &flag, &status);
    printf("\n MPI_SOURCE=%d ", status.MPI_SOURCE);
    while (!flag)
    {
        /* Do some work ... */
        printf("\n Not done yet");
        MPI_Test(&request, &flag, &status);
    }
        printf("\n Done ");
    MPI_Finalize();
    return 0;
}

