Alternative Server
MPI_Request requests[large];
MPI_Status statuses[large];
int indices[large], buf[large];
MPI_Irecv(buf+i, 1, MPI_INT, i, MPI_ANY_TAG, MPI_COMM_WORLD,
MPI_Waitsome(size-1, requests, &ndone, indices, statuses );
for (i=0; i<ndone; i++) {
... switch on statuses[i].MPI_TAG ...
MPI_Irecv(buf+j, 1, MPI_INT, j, MPI_ANY_TAG,
MPI_COMM_WORLD, &requests[j] );