#include #include int sum; // global data void *runner(void *param) //thread int main(int argc, char *argv[]) { pthread_t tid; pthread_attr_t attr; if (argc != 2) { fprintf(stderr, "usage: a.out \n"); exit(); } if (atoi(argv[1]) < 0) { fprintf(stderr, "argument (%d) must be positive\n", atoi(argv[1])); exit(); } // INITIALIZE pthread_attr_init(&attr); pthread_create(&tid, &attr,runner, argv[1]); // WAIT pthread_join(tid,NULL); printf("sum = %d\n", sum); } /* runner thread */ void *runner(void *param) { int i, upper=atoi(param); sum=0; if (upper >0) for (i=1; i<= upper; i++) sum +=i; pthread_exit(0); }