void MPE_Counter_service( MPI_Comm comm )
{
static int counter = 0;
int requester, flag;
MPI_Status status;
/* Process all pending messages */
do {
MPI_Iprobe(MPI_ANY_SOURCE, COUNTER, comm, &flag, &status );
if (flag) {
requester = status.MPI_SOURCE;
MPI_Recv(MPI_BOTTOM, 0, MPI_INT, requester, COUNTER,
comm, &status );
counter++;
MPI_Send(&counter, 1, MPI_INT, requester,
COUNTER, comm );
}
} while (flag);
}