Re: pitanje, zad. 58
andrejad <andrejad@sezampro.yu> wrote:
tacno! u pravu si, to sam zaboravio...
samo me jos zanima zasto ce da bude lose i ako out-ujem
"mozete_citati" u inicijalizaciji? gde ce onda da se zaglavi?
Evo ovako... Nekoliko reader-a pređe preko
rd("mozete_citati");
i tu se malo uspore. Zatim writer uradi
in("mozete_citati");
rd("rd_num", 0);
Pošto reader-i još nisu inkrementirali rd_num ovo prođe i počne da piše. Oni reader-i koji su malopre prošli počnu da čitaju. Nije baš zaglavljivanje ali je loše.
Plus što sam ti još malo izmenio, ti imaš:
in("rd_num", 0);
To uzima tuple iz tuple space, posle neće imati ko da je vrati.
Kad uspeš da rešiš sve probleme u programu dobićeš ustvari rešenje sa vežbi :-)
rd() {
int i;
int rdn;
while(1) {
in("red", ?i);
out("red", ++i);
rd("mozete_citati");
in("rd_num", ?rdn);
out("rd_num", ++rdn);
citanje();
in("rd_num", ?rdn);
out("rd_num", ++rdn);
}
}
wr() {
int i;
while(1) {
in("red", ?i);
out("red", ++i);
in("mozete_citati");
in("rd_num", 0); // ceka da bude 0?
pisanje();
out("mozete_citati");
}
}
initialize() {
int i;
out("red", 0);
out("rd_num", 0);
for(i=0; i<MAX; i++) {
eval(rd());
eval(wr());
}
}
- Follow-Ups:
- Re: pitanje, zad. 58
- From: andrejad <andrejad@sezampro.yu>
- Re: pitanje, zad. 58
- References:
- Ocene
- From: "Mladen Melezovic" <melez@verat.net>
- pitanje, zad. 58
- From: andrejad <andrejad@sezampro.yu>
- Re: pitanje, zad. 58
- From: Nikola Mihajlović <alamothe@gmail.com>
- Re: pitanje, zad. 58
- From: andrejad <andrejad@sezampro.yu>
- Ocene
Previous by date: Re: pitanje, zad. 58
Next by date: Re: pitanje, zad. 58
Previous by thread: Re: pitanje, zad. 58 Next by thread: Re: pitanje, zad. 58
Previous by thread: Re: pitanje, zad. 58 Next by thread: Re: pitanje, zad. 58