-> Implementácia semafora : typedef semaphore struct { int value; /* hodnota semafora struct list list_of_proces; /* zoznam procesov Zadefinujeme dve operácie: zablokuj_volajuci_proces() - zastaví proces, ktorý volal operáciu. odblokuj_proces( P ) - uvedie do stavu pripravený proces P.
-> OPERACIE NAD SEMAFORMI: wait(S): S.value = S.value -1; if ( S.value < 0 ) { pridaj_proces(S.list_of_proces); zablokuj_volajuci_proces(); }
signal(S): S.value = S.value + 1; if ( S.value <= 0 ) { P = odstran_proces(S.list_of_proces); odblokuj_proces( P ); }