Ayuda con hebras y c

Buenas estoy implementando el problema del productor/consumidor:
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <errno.h>

#define veces 30
#define tamano 10

sem_t em,n,s;
int buffer[tamano];
int pos=0;

productor(){
   int dato,i;
   for(i=0;i<veces;i++){
      sleep(1);
      dato=random();
      printf("%d - Dato:%d\n",i,dato);
      sem_wait(&n);
      sem_wait(&em);
      dato=random();
      buffer[pos]=dato;
      pos++;
      sem_post(&em);
      sem_post(&s);
   }
}
consumidor(){
   int i,num;
   for(i=0;i<veces;i++){
      sem_wait(&s);
      sem_wait(&em);
      pos--;
      num=buffer[pos];
      printf("%d - dato extraido:%d",i,num);
      sem_post(&em);
      sem_post(&n);
      sleep(i%5);
   }
}
main(){
   pthread_t tproductor;
   pthread_t tconsumidor;
   int error1,error2;
   sem_init(&em,0,1);
   sem_init(&s,0,0);
   sem_init(&n,0,tamano);
   error1=pthread_create(&tproductor,NULL,(void *)productor,NULL);
   if(error1)
      printf("%d\n",error1);
   error2=pthread_create(&tconsumidor,NULL,(void *)consumidor,NULL);
   if(error2)
      printf("%d\n",error2);
}


Lo compilo tal que:
cc -lpthread productor-consumidor.c -o productor-consumidor.o


Y lo ejecuto tal que:
./productor-consumidor.o


No me da ningún error en el código, pero tampoco me muestra nada, osea lo ejecuto y los printf que tengo no los visualiza, ¿alguien sabe porque puede ser?

Un saludo
0 respuestas