asfsfasafsfa

 avatar
unknown
plain_text
a month ago
1.2 kB
4
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;
}
Leave a Comment