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

void *thread1(void *parg)
{
     while(1)
       printf("Printing from thread 1\n");
       
       return NULL;
}

void *thread2(void *parg)
{
     while(1)
       printf("Printing from thread 2\n");

       return NULL;
}


int main(int argc, char *argv[])
{
      pthread_barrier_t barrier;
      pthread_barrierattr_t barrierAttr;
      pthread_t threadID;
      pthread_attr_t threadAttr;
      
      pthread_barrierattr_init(&barrierAttr);
      pthread_barrier_init(&barrier, &barrierAttr, 3);
      
      pthread_attr_init(&threadAttr);
      pthread_attr_setdetachstate(&threadAttr, PTHREAD_CREATE_DETACHED);
      
      pthread_create(&threadID, &threadAttr, thread1, NULL);
      pthread_create(&threadID, &threadAttr, thread2, NULL);
      
      pthread_barrier_wait(&barrier);
      return 0;
}

