#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; }