Impemnt Producer Consumer Problem In cpp or c

Impemnt Producer Consumer Problem In cpp or c

PROGRAM:

#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
# define BufferSize 3

int mutex=1,full=0,empty=3,x=0;


 void *producer();
 void *consumer();
int BufferIndex=0;
char *BUFFER;

pthread_cond_t Buffer_Not_Full=PTHREAD_COND_INITIALIZER;
pthread_cond_t Buffer_Not_Empty=PTHREAD_COND_INITIALIZER;
pthread_mutex_t mVar=PTHREAD_MUTEX_INITIALIZER;


int wait(int);
int Signal(int);
int main()
{
 int n;
 pthread_t ptid,ctid;

    BUFFER=(char *) malloc(sizeof(char) * BufferSize);

 printf("\n1.Producer\n2.Consumer\n3.Exit");
 while(1)
 {
  printf("\nEnter your choice:");
  scanf("%d",&n);
  switch(n)
  {
   case 1: if((mutex==1)&&(empty!=0)){
      //producer();
                    pthread_create(&ptid,NULL,producer,NULL);
                    pthread_join(ptid,NULL);}
     else
      printf("Buffer is full!!");
     break;
   case 2: if((mutex==1)&&(full!=0)){
      //consumer();

                    pthread_create(&ctid,NULL,consumer,NULL);
                    pthread_join(ctid,NULL);}
     else
      printf("Buffer is empty!!");
     break;
   case 3:
     exit(0);
     break;
  }
 }



 return 0;
}

int wait(int s)
{
 return (--s);
}

int Signal(int s)
{
 return(++s);
}

void *producer()
{
 mutex=wait(mutex);
 full=Signal(full);
 empty=wait(empty);
 x++;
 printf("\nProducer produces the item %d",x);
 mutex=Signal(mutex);
}

void *consumer()
{
 mutex=wait(mutex);
 full=wait(full);
 empty=Signal(empty);
 printf("\nConsumer consumes item %d",x);
 x--;
 mutex=Signal(mutex);
}

 
 

Comments

Popular posts from this blog

Introduction to ChatGPT: Explain what ChatGPT is, how it works, and what it is used for.

Multi Level Inheritance In cpp

Hybrid Inheritance In cpp