-
1. Data: 2009-01-29 22:04:43
Temat: Przykład operacji na semaforach
Od: Ammate <a...@g...com>
Witam,
Mam taki przykład. Jest bufor1 nieskończony. Jeden producent wstawia
do bufor1. Jeden konsument pobiera z bufora1. Drugi pobiera także z
bufor1, oprócz tego jeśli uzbiera się 5 elementów to sumuje je i
wstawia do bufor2. Trzeci konsument pobiera z bufor2. Wymyśliłem takie
rozwiązanie, nie jest ważna dokładna implementacja a jedynie pseudo
kod.
semafor: wolne, zajete, s, k
Producent:
while(1):
P(wolne)
P(s)
wstaw do bufor1
V(s)
V(zajete)
Konsument1:
while(1):
P(zajete)
P(s)
pobierz z bufor1
V(s)
V(wolne)
Konsument2:
while(1):
P(zajete)
P(s)
pobierz z bufor1
suma
licznik +=1
V(s)
V(wolne)
if licznik = 5:
P(k)
wstaw do bufor2
licznik = 0;
V(k)
Konsument3:
while(1):
P(k)
pobierz z bufor2
V(k)