stary pub

Transkrypt

stary pub
Programowanie równoległe
Laboratorium 4
Informatyka Stosowana
Cel:
•
opanowanie umiejętności pisania programów z synchronizacją wątków.
Kroki:
1.
2.
3.
Utworzenie katalogu roboczego (np. lab_4)
Stworzenie programu tworzącego dwa wątki – jeden zwiększa o 1 zmienną licznik w globalnej strukturze danych do
100000, a drugi ją zmniejsza o 1 tyle samo razy. Jaką wartość ma na końcu ta zmienna? – rozwiąż problem by
dawała wartość 0.
Implementacja symulacji pubu:
•
•
•
•
•
•
•
•
•
Pub jest strukturą lokalną w procedurze main
W pubie jest n kufli 1 L oraz k klientów.
Klienci są reprezentowani przez wątki.
Każdy klient pragnie wypić 2 litry piwa.
Napełnienie jednego kufla trwa 5 sekund.
Klient opróżnia kufel w 25 sekund.
Po wypiciu 1 litra klient oddaje stary kufel i pobiera nowy
Po wypiciu 2 litrów klient opuszcza pub.
Pub otwarty jest do ostatniego klienta (ale nie wpuszcza nowych).
Zaimplementować symulację pubu przy powyższych założeniach używając wyłącznie muteksów i procedury
pthread_mutex_lock. Parametrami symulacji są: ilość klientów oraz ilość kufli. Rozważyć wydajność pracy pubu w
zależności od tych parametrów.
Rozszerzenia dla podwyższenia oceny:
1. Zaimplementować pub wykorzystując procedurę trylock do sprawdzania wolnych kufli
2. W związku z rosnącą popularnością pubu (rosnąca liczba klientów) wprowadzić większą liczbę kranów
3. Zilustrować graficznie działanie pubu
Warunki zaliczenia:
1. Obecność na zajęciach i wykonanie kroków 1-3.
2. Oddanie napisanego odręcznie sprawozdania z opisem zadania, kodem źródłowym programów oraz analizą
wydajności dla różnych parametrów symulacji.