#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

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_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);
  pthread_yield();    
  *pFlag = *pFlag + 12;
  printf ("Sub 2 %d\n",*pFlag);
  
  return((void *)78);

  }


