#include #include #include #include #define READY_TAG 998 #define EXIT_TAG 999 #define Products 10 int main(int argc, char **argv) { int numprocs, myid; int i,j, ibuf, numcustomers, *bagboy_tallies, readyone, items, g; int working=1, expecting_messages=1; int item_tally, bagged_items; /* Note, Products below are defined in order of increasing weight */ char Groceries[Products][20] = {"Chips","Lettuce","Bread","Eggs", \ "Pork Chops","Carrots","Rice","Canned Beans","Spaghetti Sauce","Potatoes"}; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); srand((unsigned)time(NULL)+myid); numcustomers = 10; if (myid == 0) { bagboy_tallies = (int *) malloc(numprocs*sizeof(int)); for (i=0;i 0) { item_tally++; bagged_items++; printf("%d: Received %20s, item %d of %d\n", \ myid,Groceries[status.MPI_TAG],bagged_items,items); if (bagged_items == items) expecting_messages = 0; } else { expecting_messages = 0; working = 0; } } } } MPI_Finalize(); return 0; }