#include #include #include #include #include //#include void* func(void*); main() { pthread_t t[4]; 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 );; for (int i = 0; i < 4; i++) { pthread_create(&t[i], &attr, func, (void*) pFlag); // pthread_create(&t, NULL, func, (void*) pFlag); // pthread_create(&t2, &attr, func, (void*) pFlag); } for (int j = 0; j< 4; j++){ pthread_join(t[j], &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); // pthread_yield(); sleep(4); // sleep (time()%6 +1) *pFlag = *pFlag + 12; printf ("Sub 2 %d\n",*pFlag); return((void *)*pFlag); }