Problem Producenta i Konsumenta - implementacja w C/Linux ; PILNE

Zlecenie zamknięte
no avatar
Art_W_98
Zleceniodawca
1 umowa
Kategoria zlecenia:
Usługi programowania
Budżet:

Do negocjacji

Umiejętności:
Opublikowano:
Ważne do:

Opis zlecenia

Napisz dwa programy reprezentujące producenta i konsumenta, oraz trzeci program - główną funkcję korzystającą z konsumenta i producenta, zapewniającą ich ciągłe i bezkolizyjne działanie.

Program powinien korzystać ze strefy buforowej (buffer) o N miejscach, oraz pozwalać na działanie N programów jednocześnie - produkujących i konsumujących różne przedmioty.

Liczba przedmiotów wyprodukowanych/skonsumowanych jednocześnie nie może przekraczać liczby miejsc w buforze.

Program powinien działać w zapętleniu (bez końca), z różnymi i zmieniającymi się prędkościami produkcji i konsumpcji.

Kolejność konsumowania przedmiotów powinna odzwierciedlać kolejność ich produkcji: pierwszy wyprodukowany przedmiot powinien być skonsumowany jako pierwszy.

Konsument nigdy nie powinien konsumować z niezapełnionego miejsca. Producent nigdy nie powinien zapełniać już zapełnionego miejsca.

W implementacji wykorzystaj funkcje mutex i/lub semaphores i/lub threads.

Fragment przykładowego outputu pożądanej postaci:

Producent1 wyprodukowal przedmiot 1

Producent3 wyprodukowal przedmiot 2

Producent2 wyprodukowal przedmiot 3

Konsument1 skonsumował przedmiot 1

Konsument2 skonsumował przedmiot 2

Producent1 wyprodukowal przedmiot 4

Konsument3 skonsumował przedmiot 3

.

.

.

Załączam przykładowe rozwiązanie (do użycia w linuxie lub kompilatorze C)

W przypadku Linuxa włączanie programów powinno przebiegać w sposób analogiczny do poniższego (nazwy odnoszą się do przykładowych załączonych plików):

gcc start.c -o start -lpthread -lrt

gcc producer.c -o producer -lpthread -lrt

gcc consumer.c -o consumer -lpthread -lrt

gcc unlink.c -o unlink -lpthread -lrt

Przesłane oferty 1