/* Code of Figure 14.5, page 634 from Kenneth C. Louden, Programming Languages Principles and Practice 2nd Edition Copyright (C) Brooks-Cole/ITP, 2003 NOTE: the figure in the book is missing the entire main program */ #define SIZE 100 #define NUMPROCS 10 int a[SIZE] [SIZE], b[SIZE] [SIZE], c[SIZE] [SIZE]; void multiply(int myid) { int i, j, k; for (i = myid; i < SIZE; i+= NUMPROCS) for (j = 0; j < SIZE; ++j) { c[i][j] = 0; for (k = 0; k < SIZE; ++k) c[i][j] += a[i][k] * b[k][j]; } } main() { int myid; /* code to input a,b goes here */ for (myid = 0; myid < NUMPROCS; ++myid) if (fork() == 0) { multiply(myid); exit(0);} for (myid = 0; myid < NUMPROCS; ++myid) wait(0); /* code to output c goes here */ return 0; }