/* sum.c - based on book example on page 173 * The man page says to use "-pthread" to compile, as in: * gcc sum.c -pthread -o sum */ #include #include int sum; void * runner (void * param); int main(int argc, char *argv[]) { pthread_t tid; pthread_attr_t attr; if (argc != 2) { fprintf(stderr, "usage: sum \n"); return -1; } if (atoi (argv[1]) < 0) { fprintf(stderr, "%d must be >= 0\n", atoi(argv[1])); return -1; } pthread_attr_init(&attr); pthread_create(&tid, &attr, runner, argv[1]); pthread_join(tid, NULL); printf("sum = %d\n", sum); } void * runner(void *param) { int i, upper = atoi(param); sum = 0; for (i = 1; i <= upper; ++i) sum += i; pthread_exit(0); }