#include #include // Name: simple_thread // Purpose: strange way of computing the square of a number void * simple_thread(void *param) { int x, y, inc; x = (int)param; y = x; inc = x; printf("\n\n"); printf(" ¶m = %x\n",¶m); printf(" &inc = %x\n",&inc); printf(" x = %i, y = %i\n",x,y); sleep(2); printf(" &x = %x, &y = %x\n",&x,&y); while (y > 1) { x += inc; y--; //printf(" x = %i, y = %i\n",x,y); } printf("\nThread exiting!!!\n"); return (void *)x; } // Name: main // Purpose: create child threads to perform computations int main() { int status; pthread_t id, id1, id2; void *paramPtr; int param; void **retVal; paramPtr = ¶m; // Create a child thread... param = 5; status = pthread_create(&id1, NULL, simple_thread, (void *)param); // Join on a thread... id = id1; status = pthread_join(id, retVal); printf("\n Return value (id = %i) = %i\n\n", id, *retVal); // Create a child thread... param = 7; status = pthread_create(&id2, NULL, simple_thread, (void *)param); // Join on a thread... id = id2; status = pthread_join(id, retVal); printf("\n Return value (id = %i) = %i\n\n", id, *retVal); return 0; }