Monitore (konkurrentzia)
|
Artikulu edo atal hau ez dator bat formatu hitzarmenekin. |
Konkurrentzian, monitorea hariek erabil dezaketen objetua edo moduloa da. Bere bereizgarri nagusia metodoak elkar-bazterketarekin exekutatzen direla da. Horrela, momentu jakin batean, hariek ezin dute monitorearen metodoak deitu beste hari batek monitorearen metodo bat erabiltzen ari denean.
Ezaugarriak[aldatu | aldatu iturburu kodea]
Monitore bat definitzeko honako ezaugarriak eduki behar ditu:
- Kapsulatutako datuak eta atzipen prozedurak eduki behar ditu.
- Elkar-Bazterketa eta baldintzen sinkronizazioa ziurtatu behar ditu.
- Monitorea atzipen prozedura aktibo bakarra izan behar du, hau da, monitore instantzia bakarra egongo da.
Monitorea eta hariak[aldatu | aldatu iturburu kodea]
Programa konkurrente batean hariak eta monitorea identifikatu behar dira:
- Hatia: ekintzak abiarazten dituen entitate aktiboa.
- Monitorea: ekintzei erantzuten dion entitate pasiboa.
Hari bat monitorean sartzeko monitoreari dagokion elkar-bazterketa blokeoa eskuratzen du. Haria bukatzean monitoretik ateratzeko monitorearen blokeoa askatu behar du.
Monitoreen inplementazioa Javan[aldatu | aldatu iturburu kodea]
synchronized - monitore metodoak babesteko erabiltzen den etiketa, elkar-bazterketa ziurtatzen du.
wait() – hariak monitoretik ateratzea eragiten du, beste hariei monitorean sartzeko aukera ematen.
notify()/notifyAll() - itxaroten geratu diren haria esnatzen ditu, monitorearen egoeran aldaketak egin direnean.
Metodo batean:
- Ekintzak babesten dira synchronized metodo batekin inplementatuz.
- Babesa inplementatzeko while begizta bat eta wait() erabiltzen dira.
- Metodoaren bukaeran, beharrezkoa bada, beste hariak esnatuko dira notify()/notifyAll() erabiliz.