/* So some stats via a thread but first do it without threads now with threads */ #include #include #include #include #include /* the list of integers */ int *list; /* hold the answers */ double average; int maximun; int minimum; int num_of_args; void *calculate_average(void *param); void *calculate_maximum(void *param); void *calculate_minimum(void *param); int main(int argc, char *argv[]) { int i; num_of_args = argc - 1; pthread_t tid_average; pthread_t tid_maximum; pthread_t tid_minimum; /* allocate memory to hold the array of integers */ list = malloc(sizeof(int) * num_of_args); for (i=0; i < num_of_args; i++) list[i] = atoi(argv[i+1]); //calculate_average(&num_of_args); //calculate_maximum(&num_of_args); //calculate_minimum(&num_of_args); /* add the thread calls instead of the old way */ /* arguements-> thread id, attributes (if any), start (we put fuction in here), arguments */ pthread_create(&tid_average, NULL, calculate_average, &num_of_args); pthread_create(&tid_maximum, NULL, calculate_maximum, &num_of_args); pthread_create(&tid_minimum, NULL, calculate_minimum, &num_of_args); pthread_join(tid_average, NULL); pthread_join(tid_maximum, NULL); pthread_join(tid_minimum, NULL); printf("The average is %f\n", average); printf("The maximun is %d\n", maximun); printf("The minimum is %d\n", minimum); return 0; } void *calculate_average(void *param) { int count = *(int *)param; int i; float total=0.0; printf("count=%d\n", count); for (i=0; i< count; i++) printf("%d\n", list[i]); for (i=0; i maximun) maximun=list[i]; } void *calculate_minimum(void *param) { int count = *(int *)param; int i; minimum=list[0]; for (i=1; i