#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <pthread.h>

#include "msgqueue.h"

MsgQueue fq;

void * worker(void *)
{
  int * c;
  while(1)
    {
      c = (int*)msg_pop(&fq);
      
      printf("poped: %d\n", *c);
      free(c);
    }
  return 0;
}

void * creator(void*)
{
  int i, j;
  int * c;

  for(i=0; i< 10; i++)
    {
      for (j=0; j<10; j++)
	{
	  c = (int*)malloc(sizeof(int));
	  *c = i*j;
	  msg_push(&fq, (void*)c);
	  printf("push\n");
	}
      sleep(1);
    }

  pthread_exit(0);
  return 0;
}


int main(void)
{
  pthread_t c, w;
  int ret;

  msg_init(&fq, 30);

  ret = pthread_create(&c, 0, &creator, 0);


  ret = pthread_create(&w, 0, &worker, 0);
  
  pthread_join(c, 0);

  while(!msg_is_empty(&fq)) { 
    sleep(1);
  }

  //  pthread

  return 0;
}
