smith32 0 Newbie Poster

I don't get it why my threads can't perform properly for writer/reader problem.
I think something with the semaphore. but can't solve and online can't help me too.

semaphore mutex, read, write;
void *reader(void *argv)
{
   char buffer[200];
   int readNo, i=0;
  
   do
   {
      sem_wait(&read);
      sem_wait(&mutex);

      sem_getvalue(&read, &readNo);
     
      fgets(buffer, sizeof(buffer), argv);  //read line by line from file
      
      CirBuf[i] = init(CirBuf[i], strlen(buffer));
      print_buff();
      CirBuf[i] = buffer;
     
      i++;
      if(i == 15) i = 0;

      sem_post(&mutex);      
      sem_post(&write);

   }while(readNo > 0);
   sem_post(&write);

   pthread_exit(NULL);
}

void *writer(void *argv)
{
   int i= 1;
   
  
   do
   {
     sem_wait(&write);
     sem_wait(&mutex);
     sem_getvalue(&write, &i);
     printf("arrive here\n");	
      if(CirBuf[i] != NULL)
      {
      fputs(CirBuf[i], argv);  // write to the file;
      CurBuf[i] = '\0';
      }

     sem_post(&mutex);
     sem_post(&read);
   }while(i > 0);

   pthread_exit(NULL);	
}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.