Monitore (konkurrentzia)


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.

Monitore bat definitzeko honako ezaugarriak eduki behar ditu:

  1. Kapsulatutako datuak eta atzipen prozedurak eduki behar ditu.
  2. Elkar-Bazterketa eta baldintzen sinkronizazioa ziurtatu behar ditu.
  3. 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.

Kanpo estekak

[aldatu | aldatu iturburu kodea]