#include #include #include #include #define max(a,b) ((a)>(b)?(a):(b)) #define SIZE 10 /* Size of matrices */ #define tolerance 0.001 /* defines when to stop */ int N; /* number of threads */ double grid[SIZE+1][SIZE+1], temp[SIZE+1][SIZE+1]; typedef struct { /* used to pass args to threads */ int from, to; double diff; } Args; void fill_matrix() { int i, j; for (i=0; ifrom; i < s->to; i++) for (j=1; jdiff = 0; for (i=a->from; i < a->to; i++) for (j=1; jdiff = max (a->diff, fabs(grid[i][j]-temp[i][j])); grid[i][j]=temp[i][j]; } } int main(int argc, char *argv[]) { pthread_t *thread; int i; double d; Args *args; if (argc!=2) { printf("Usage: %s number_of_threads\n",argv[0]); exit(-1); } N=atoi(argv[1]); fill_matrix(); args = malloc(N*sizeof(Args)); thread = malloc(N*sizeof(pthread_t)); for (i=0; itolerance); print_matrix(); return 0; }