#include #include static int check = 0; void* go_smith(void* arg) { if(arg) { pthread_t *psmith = (pthread_t*) arg; printf("I am Agent Smith %x @%p (%d)\n",*psmith,&check,check); check = 2; pthread_exit(0); } else { printf("I am Agent Smith 0 @%p (%d)\n",&check,check); } return 0x0; } int main(int argc, char *argv[]) { pthread_t smith; check = 1; pthread_create(&smith,0x0,&go_smith,&smith); pthread_join(smith,0x0); go_smith(0x0); return 0; }