/* * CS170: preempt2.c * adapted from code by Jim Plank */ #include #include #include #include void *infloop(void *x) { double f; int i, j, *id; id = (int *) x; i = 0; for (i = 0; i >= 0; i++) { printf("thread %d. i = %10d\n", *id, i); f = 1; for (j = 0; j < 50000; j++) { f = f*.99; } i++; } return NULL; } int main() { pthread_t t[2]; pthread_attr_t attr[2]; int id[2], i; void *retval; for (i = 0; i < 2; i++) { id[i] = i; pthread_attr_init(&(attr[i])); pthread_attr_setscope(&(attr[i]), PTHREAD_SCOPE_SYSTEM); pthread_create(&(t[i]), &(attr[i]), infloop, (void *)(&id[i])); } for (i = 0; i < 2; i++) { pthread_join(t[i], &retval); } return(0); }