asfsfasafsfa
unknown
plain_text
a year ago
1.2 kB
15
Indexable
#include <stdio.h>
int mutex = 1, full = 0, empty = 3, x = 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);
}
int main() {
int n;
printf("\n1. PRODUCER\n2. CONSUMER\n3. EXIT\n");
while (1) {
printf("\nENTER 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:
return 0;
default:
printf("INVALID CHOICE\n");
}
}
return 0;
}
Editor is loading...
Leave a Comment