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

Re: H2O problem

by Igor Stojkovic
subota, 05. maj 2007 - 13:57.

On 5/5/07, Bojan <bojan23@sbb.co.yu> wrote:




Mislim da bi ovo najlakse moglo da se resi ako se wait(oxyMutex) stavi na
pocetak koda za kiseonik ispred 2x signal(hydroSem) tako da sledeci kiseonik
moze da dodje tek posto se prvi povezao sa prva 2 vodonika koja su dosla.

Ovde se, istina, gubi na konkuretnosti ali je zato osigurano da radi kako
treba…



> Radio sam iz Vezbi2007_V1.1.pdf 9. zadatak iz semafora (The H2O
> problem) i primetio jedan slucaj koji se ne uklapa bas u resenje.
>
> Recimo dodju 2 kiseonika. Prvi se zaglavi na wait(oxySem) a drugi na
> wait(oxyMutex). Sada dodju 2 vodonika. Prvi se zaglavi na
> wait(hydroSem2) a drugi sa signal(oxySem) dozvoli prvom kiseoniku da
> zavrsi posao tj. pozove bond(i). Taj drugi vodonik stigne do
> wait(hydroSem2) koji bi sada mogao da prodje, ali i pre nego sto
> izvrsi taj poziv uleti 3. vodonik, koji na isti nacin stigne do te
> naredbe kada i njemu uleti 4. vodonik (znam da je malo verovatno,
> ali...). Taj 4. vodonik sa jos jednim signal(oxySem) dozvoli i drugom
> kiseoniku da prodje (wait(oxyMutex) je prosao jos kad je prvi kiseonik
> zavrsio posao) i da on izvrsi bond(i). Tek posle toga sva cetiri
> vodonika prolaze wait(hydroSem2).
>
> Ja koliko sam shvatio ne bi smelo da se desi da prodju dva kiseonika a
> da nije ni jedan vodonik. Ispravite me ako gresim (bilo gde).
-----------------------------------------------------------------
unsubscribe:
minimalist@rti.etf.bg.ac.yu?subject=unsubscribe%20drs
-----------------------------------------------------------------


Ni ovo ne resava problem jer drugi vodonik moze javiti prvom kiseoniku
da moze da se vezuje i kiseonik se veze i propusti sledeci kroz mutex
a onaj drugi vodonik stane pred onom wait naredbom kao sto sam
objasnio, i onda opet dodju dva vodonika na isti nacin i sve se opet
isto desava.

--
Pozdrav,
Igor Stojkovic mailto: stojkovic.igor@gmail.com