«« ( Date ) »» // «« ( Thread ) »» // drs - 2006

Monitori

by Branko Golubovic
sreda, 13. septembar 2006 - 11:32.

Jedno pitanje za asistenta (ili nekog ko je APSOLUTNO siguran u ono sto pise
:)

Kod monitora u pascal-u, readers-writers problem, prvi zadatak sa vezbi,
zanima me da li sam dobro shvatio... Prvo, procedura signal budi prvog ko je
u redu cekanja za dati uslov (condition) ili budi sve koji su u redu (tipa
broadcast) - koliko sam ja shvatio, budi prvog?

Ako budi samo prvog, i situacija je sledeca: imali smo jednog writer-a koji
je pisao, u medjuvremenu se pojavio jos npr. jedan writer i nekoliko
reader-a; writer zavrsava i budi prvog reader-a, koji zatim budi sledeceg
reader-a, i tako dalje, sve dok ima reader-a u redu. Prvi put kada signal
nema koga da probudi u redu za citanje, taj signal prakticno "propada" i tek
tada prvi sledeci writer dobija sansu (naravno, kada i poslednji reader
zavrsi sa citanjem); zato sto svaki sledeci reader koji naidje, mora da ceka
jer je Oktowrite.queue == true, a vise nema ni jedan reader ispred da mu
signalizira da prodje...

Da li je to tako ili sam negde pogresio sa pretpostavkama?

Unapred hvala! Pozdrav,
Branko