Re: za asistenta
Izvinjavam se unapred, ako ovaj mejl dobijate po drugi put. Kod prvog slanja
sam imao nekih problema.
Nisam dobro procitao ono sto si napisao. Mislio sam da si napisao da
dodje samo jedan atom kiseonika, a za njim 4 atoma vodonika. Onda, po onome
sto si napisao, sledi da onaj drugi atom vodonika odblokira prvi atom
kiseonika, koji nesmetano prodje barijeru, potom ne prodje 1. ili 2. ili oba
H ( jer ne smemo nista da pretpostavljamo o vremenima izvrsavanja
procedura), 3. i 4. H odblokiraju onaj 2. atom O, i tako u nedogled.
Da li bi moglo da se popravi resenje sa ovim?
procedure Hydrogen(i:integer);
begin
wait(hydroSem);
wait(hydroMutex);
count:= count + 1;
if(count =2) then
begin
signal(oxySem);
signal(hydroSem2); // obavesti onog prvog
count:= 0;
bond(i); // posto te je O sacekao, a ti si drugi, nema
razloga da ne prodjes i prolazis odmah, nedeljivo
signal(hydroMutex); // oslobodi za sledece H
end; else begin // ako si prvi
signal(hydroMutex);
wait(Mutexpomocni); // onaj prvi H ce proci, 3. ce se
zaglaviti
wait(hydroSem2); // onaj prvi H ceka potvrdu od
drugog
bond(i); // i nedeljivo prelazi
barijeru
signal(Mutexpomocni); // oslobodi treci H sto/ako ceka.
end;
end;
Da li ovo ISTA valja? :) Nadam se da nisam nesto lupio
Nego, dok sam kucao ovo, postalo mi je nejasno da li moze da neka
promenljiva/procedura/... malo bude u kriticnoj sekciji malo ne bude,
zavisno od procedure do procedure. U materijalim sa vezbi je bond(i) u O u
krit. sek. a u H nije.
sam imao nekih problema.
Nisam dobro procitao ono sto si napisao. Mislio sam da si napisao da
dodje samo jedan atom kiseonika, a za njim 4 atoma vodonika. Onda, po onome
sto si napisao, sledi da onaj drugi atom vodonika odblokira prvi atom
kiseonika, koji nesmetano prodje barijeru, potom ne prodje 1. ili 2. ili oba
H ( jer ne smemo nista da pretpostavljamo o vremenima izvrsavanja
procedura), 3. i 4. H odblokiraju onaj 2. atom O, i tako u nedogled.
Da li bi moglo da se popravi resenje sa ovim?
procedure Hydrogen(i:integer);
begin
wait(hydroSem);
wait(hydroMutex);
count:= count + 1;
if(count =2) then
begin
signal(oxySem);
signal(hydroSem2); // obavesti onog prvog
count:= 0;
bond(i); // posto te je O sacekao, a ti si drugi, nema
razloga da ne prodjes i prolazis odmah, nedeljivo
signal(hydroMutex); // oslobodi za sledece H
end; else begin // ako si prvi
signal(hydroMutex);
wait(Mutexpomocni); // onaj prvi H ce proci, 3. ce se
zaglaviti
wait(hydroSem2); // onaj prvi H ceka potvrdu od
drugog
bond(i); // i nedeljivo prelazi
barijeru
signal(Mutexpomocni); // oslobodi treci H sto/ako ceka.
end;
end;
Da li ovo ISTA valja? :) Nadam se da nisam nesto lupio
Nego, dok sam kucao ovo, postalo mi je nejasno da li moze da neka
promenljiva/procedura/... malo bude u kriticnoj sekciji malo ne bude,
zavisno od procedure do procedure. U materijalim sa vezbi je bond(i) u O u
krit. sek. a u H nije.
- References:
- Re: za asistenta
- From: Zaharije Radivojevic <zaki@galeb.etf.bg.ac.yu>
- Re: za asistenta
- From: "Sasa Vitorovic" <savitor@sbb.co.yu>
- za asistenta
- From: "Igor Stojkovic" <stojkovic.igor@gmail.com>
- Re: za asistenta
- From: "Milos Ilic" <milos.ilic@gmail.com>
- Re: za asistenta
- From: "Milos Ilic" <milos.ilic@gmail.com>
- Re: za asistenta
Previous by date: Re: za asistenta
Next by date: Re: za asistenta
Previous by thread: Re: za asistenta Next by thread: Re: za asistenta
Previous by thread: Re: za asistenta Next by thread: Re: za asistenta