Barbiere dormiglione


Schema di soluzione con semafori



Scaricare 87.96 Kb.
Pagina2/8
22.12.2019
Dimensione del file87.96 Kb.
1   2   3   4   5   6   7   8
Schema di soluzione con semafori

Barbiere


{

BarbiereAddormentato= true;

…………………………………………

// la riga precedente inizializza il negozio ed è eseguita prima della generazione dei thread “cliente” //

while(true) {

…………………………………………

…………………………………………

if ClientiInAttesa> 0 {



// riattiva un cliente in attesa del turno e libera la poltrona //

ClientiInAttesa – -; dorme= false;

…………………………………………

}

else { BarbiereAddormentato= true; dorme= true; }



// occupa la poltrona per dormire, sospendendosi //

…………………………………………

if dorme= true

…………………………………………

; // la sospensione avviene dopo il rilascio della mutua esclusione //

}

}


Cliente //Frammento di codice//

{

< entra nel negozio >

…………………………………………

if BarbiereAddormentato== true {

BarbiereAddormentato= false; attende= false;

…………………………………………

// sveglia il barbiere che libera la poltrona //

}

else {



// il barbiere è sveglio e sta servendo un cliente //

ClientiInAttesa ++; attende= true;

}

…………………………………………



if attende == true

…………………………………………

// la sospensione avviene dopo il rilascio della mutua esclusione //

// Il cliente attende il suo turno. Sarà riattivato dal barbiere e troverà la poltrona libera //

…………………………………………



// siede sulla poltrona e attende il taglio dei capelli. Al termine…//


// Fine del frammento di codice //

}



Condividi con i tuoi amici:
1   2   3   4   5   6   7   8


©astratto.info 2019
invia messaggio

    Pagina principale