Monitore (konkurrentzia)

Wikipedia, Entziklopedia askea


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:

  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]