#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<int> fq(30);

void * worker(void *)
{
  int * c;
  while(1)
    {
      c = fq.pop();
      
      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;
	  fq.push(c);
	  printf("push\n");
	}
      sleep(1);
    }

  pthread_exit(0);
  return 0;
}


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

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

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

  while(!fq.is_empty()) { 
    sleep(1);
  }

  //  pthread

  return 0;
}
