W supermarkecie jest łącznie 10 kas. Zasady ich działania są następujące:
-
Zawsze działają min. 2 stanowiska kasowe.
-
Na każdych K klientów znajdujących się na terenie supermarketu powinno przypadać min. 1 czynne stanowisko kasowe.
-
Jeśli liczba klientów jest mniejsza niż K*(N-1), gdzie N oznacza liczbę czynnych kas, to jedna z kas zostaje zamknięta.
-
Jeśli przed ogłoszeniem decyzji o zamknięciu kasy w kolejce czekali klienci (do tej kasy) to powinni zostać obsłużeni przez tę kasę.
Klienci przychodzą do supermarketu w losowych momentach czasu i przebywają w nim przez pewien określony losowy dla każdego z nich czas. Na sygnał o pożarze – sygnał wysyła strażak - klienci natychmiast opuszczają supermarket bez robienia zakupów, a następnie po wyjściu klientów zamykane są wszystkie kasy.
Program zawiera strażaka, klienta i kierownika kasjerów.
Link do repozytorium: https://github.com/ZuzannaZawartka/multi-threaded-supermarket-problem