#include <stdio.h> #include <stdlib.h> int full = 0, empty = 3, x = 0; void producer(); void consumer(); int wait(int); int signal(int); int main() { int n; printf("1. PRODUCER\n2. CONSUMER\n3. EXIT\n"); while (1) { printf("ENTER YOUR CHOICE\n"); scanf("%d", &n); switch (n) { case 1: if (empty != 0) producer(); else printf("BUFFER IS FULL\n"); break; case 2: if (full != 0) consumer(); else printf("BUFFER IS EMPTY\n"); break; case 3: exit(0); break; } } } int wait(int s) { return (--s); } int signal(int s) { return (++s); } void producer() { full = signal(full); empty = wait(empty); x++; printf("In Producer: Produces the item %d\n", x); } void consumer() { full = wait(full); empty = signal(empty); printf("In Consumer: Consumes item %d\n", x); x--; }