#include #include #include #include void* func(void*); main() { pthread_t t; pthread_attr_t attr; int* pFlag; pFlag = new int; *pFlag = 1; void* status; pthread_attr_init(&attr); pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); printf( "Main 1 %d\n" , *pFlag );; // pthread_create(&t, &attr, func, (void*) pFlag); pthread_create(&t, NULL, func, (void*) pFlag); pthread_join(t, &status); printf("Main 2: \t Thread returning status: %d\n", status); } void* func(void* p) { int* pFlag = (int*) p; printf ("Sub 1 %d\n",*pFlag); *pFlag = *pFlag + 12; printf ("Sub 2 %d\n",*pFlag); return((void *)78); }