Skip to content

Latest commit

 

History

History

Beehive

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
PRZYJĘTA KONWENCJA:
Cały kod napisany jest w języku angielskim. 

Program został napisany w ANSI C, z użyciem mechanizmów IPC

Struktury oraz definicje typów nazywane są UpperCamelCase-m, jestem świadomy, że konwecja nazewnictwa struktur w C, to lower_case, jednak uważam, to za mało czytelne. Cała reszta napisana jest w lower_casie, oczywiście z wyjątkiem stałych.


W przypadku pszczoły robotnicy, w treści zadania brak specyfikacji, czy wchodzenie do magazynu w celu pobrania jedzenia zeruje produkowanie miodu. Założyłem, że nie, tzn odbywa się to niezależnie, ale w ramach jednego wątku. 

SEKCJA KRYTYCZNA:
Wchodzenie do sekcji krytycznej, obywa się w następujący sposób:

1.Sprawdź czy niedźwieć atakuje
2.Jeżeli tak, to czekaj
3.Opuść semafor magazynu
4.Ponownie sprawdź, czy niedźwiedź atakuje
4.1.Jeżeli tak, to zwolnij semafor i czekaj, aż niedźwiedź zajmie miejsca w magazynie
4.2.Ponownie opuść semafor
5.Jedz odkładaj, itd...

Krok czwarty gwarantuje priorytet niedźwiedziowi w sytuacji w której, pszczoły przeszły pierwsze sprawdzenie ataku niedźwiedzia i czekają na semaforze. Czyli kiedy niedźwiedź, zaczął atakować, w momencie w którym pszczoły wykonują trzeci krok.

INTERFEJS:
Interfejs wykonany został w jednej konsoli. Odświeżać statystyki można dowolną liczbą większą od 2. Nie odświeża się sam ponieważ jest to irytujące, przy dużej ilości pszczół.

KRÓLOWA:
Królowa jest procesem, jednak tak naprawdę nic nie robi. Przy ataku niedźwiedzia królowa nie jest traktowana jak pszczoła, (nie można jej zabić).

Wszystkie stałe znajdują się w pliku "constants.h"
Reszta komenatrzy znajduje się w kodzie

URUCHAMIANIE:
Folder zawiera Makefile:
make build_and_run - kompiluj i uruchom
make build - kompiluje, program znajduje się w w folderze out
make clean - usuwa folder out