producer and consumer

PHOTO EMBED

Tue Apr 16 2024 04:15:54 GMT+0000 (Coordinated Universal Time)

Saved by @prabhas

#include <stdio.h>
#include <stdlib.h>

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

void wait(int *s)
{
   (*s)--;
}

void signal(int *s)
{
   (*s)++;
}

void producer()
{
   wait(&mutex);
   if (full == empty)
   {
      printf("Buffer is full\n");
      signal(&mutex);
      return;
   }
   empty--;
   full++;
   x++;
   printf("Producer produces the item %d\n", x);
   signal(&mutex);
}

void consumer()
{
   wait(&mutex);
   if (full == 0)
   {
      printf("Buffer is empty\n");
      signal(&mutex);
      return;
   }
   full--;
   empty++;
   printf("Consumer consumes item %d\n", x);
   x--;
   signal(&mutex);
}

int main()
{
   int n;

   printf("\n 1.Producer  \n 2.Consumer \n 3.Exit");
   while (1)
   {
      printf("\n Enter your choice:");
      scanf("%d", &n);
      switch (n)
      {
      case 1:
         if ((mutex == 1) && (empty != 0))
            producer();
         else
            printf("Buffer is full\n");
         break;
      case 2:
         if ((mutex == 1) && (full != 0))
            consumer();
         else
            printf("Buffer is empty\n");
         break;
      case 3:
         exit(0);
         break;
      }
   }
   return 0;
}
content_copyCOPY