Questo topic e' stato chiuso dal moderatore.
01/12/06 9:27
CrisLoveStefy
Il Bar Sport
�� Nel bar Sport il barista prepara i caffè posizionando le tazzine piene sul bancone del
bar in attesa dei clienti (che sono M).
�� Sul bancone al massimo possono essere posizionate N tazzine (N<M).
�� Quando il bancone è pieno di tazzine di caffè il barista si sospende mettendosi a
leggere la Gazzetta dello Sport.
�� Man mano che arrivano, i clienti prendono una tazzina di caffè, ma prima di berlo
devono zuccherarlo e una sola zuccheriera è disponibile.
�� Una volta zuccherato e bevuto il caffè, i clienti escono dal bar per fumarsi una
sigaretta.
�� Una volta terminata la sigaretta i clienti tornano dentro al bar per prendere un altro
caffè
�� Il cliente che beve l’ultima tazzina di caffè sveglia il barista, interrompendo la sua
lettura.
�� I clienti che nel frattempo arrivano al bar e vogliono bere il caffè si sospendono in
attesa che il barista abbia finito di riempire il bancone di tazzine di caffè.
�� Quando il barista ha riempito il bancone allora si occupa di svegliare i clienti in attesa
del caffè.
La soluzione proposta deve assicurare il massimo grado di parallelismo, non deve usare
busy waiting, ne’ generare deadlock o starvation. Commentare in modo chiaro il codice.
Vorrei sapere come iniziare il progetto. Cioè con la richiesta del numero dei clienti? E poi delle tazzine o viceversa? E' un'esercizio che ho trovato senza soluzione ( ) per cominciare a programmare per S.O. in C ovviamente di cui conosco le basi. Vorrei sapere soltanto l'algoritmo che dovrei usare. Io ho pensato così. Potrebbe andare bene?
1) Chiedere all'utente il numero delle tazzine
2) Chiedere all'utente il numero dei clienti
3) Dire che il barista ha preparato n caffè con il messaggio del tipo: "Il barista ha preparato %d tazzine sul bancone del bar." E poi si mette in attesa dei clienti e si mette a leggere la gazzetta dello sport. (in stato di waiting)
4) Segnalare l'arrivo dei clienti dopo un pò e dire che devono zuccherare n tazzine a seconda degli m clienti e dire in qualche modo zuccheriera disponibile solo una e fare in modo che: cliente prende zuccheriera, zuccherirera in uso..., fatto....e farlo m volte quante sono i clienti.
5) Affinche le tazzine (contanto il contenuto anche che non so come fare) le tazzine siano >0 fare il ciclo precedente una volta finito creare un'altro processo in cui i clienti vanno fumare la sigaretta.
6) Una volta fatto vedere che hanno finito, ritornano a prendere un'altro caffè e quindi penso che il barista da stato di waiting deve ripreparare n tazzine quanti i clienti....non so se è proprio così...
7) Questa non so proprio come fare: Il cliente che beve l'ultima tazzina di caffè sveglia il barista che sta leggendo.
8) E poi alla fine mi sono incasinato...e poi come devo terminarlo?
Vorrei almeno capire come fare è solo un'allenamento.... grazie per i vostri aiuti! Grazie infinite e buon lavoro.
Dopo in qualche modo vi aiuterò anche io potete chiedermi qualsiasi cosa a me...Vi dò anche il mio indirizzo se volete contattarmi:
quello che uso di più è: criscap@libero.it e crislovestefy@yahoo.it se il primo non va mandate sul secondo.
Grazie e cordiali saluti.
Cristian
�� Nel bar Sport il barista prepara i caffè posizionando le tazzine piene sul bancone del
bar in attesa dei clienti (che sono M).
�� Sul bancone al massimo possono essere posizionate N tazzine (N<M).
�� Quando il bancone è pieno di tazzine di caffè il barista si sospende mettendosi a
leggere la Gazzetta dello Sport.
�� Man mano che arrivano, i clienti prendono una tazzina di caffè, ma prima di berlo
devono zuccherarlo e una sola zuccheriera è disponibile.
�� Una volta zuccherato e bevuto il caffè, i clienti escono dal bar per fumarsi una
sigaretta.
�� Una volta terminata la sigaretta i clienti tornano dentro al bar per prendere un altro
caffè
�� Il cliente che beve l’ultima tazzina di caffè sveglia il barista, interrompendo la sua
lettura.
�� I clienti che nel frattempo arrivano al bar e vogliono bere il caffè si sospendono in
attesa che il barista abbia finito di riempire il bancone di tazzine di caffè.
�� Quando il barista ha riempito il bancone allora si occupa di svegliare i clienti in attesa
del caffè.
La soluzione proposta deve assicurare il massimo grado di parallelismo, non deve usare
busy waiting, ne’ generare deadlock o starvation. Commentare in modo chiaro il codice.
Vorrei sapere come iniziare il progetto. Cioè con la richiesta del numero dei clienti? E poi delle tazzine o viceversa? E' un'esercizio che ho trovato senza soluzione ( ) per cominciare a programmare per S.O. in C ovviamente di cui conosco le basi. Vorrei sapere soltanto l'algoritmo che dovrei usare. Io ho pensato così. Potrebbe andare bene?
1) Chiedere all'utente il numero delle tazzine
2) Chiedere all'utente il numero dei clienti
3) Dire che il barista ha preparato n caffè con il messaggio del tipo: "Il barista ha preparato %d tazzine sul bancone del bar." E poi si mette in attesa dei clienti e si mette a leggere la gazzetta dello sport. (in stato di waiting)
4) Segnalare l'arrivo dei clienti dopo un pò e dire che devono zuccherare n tazzine a seconda degli m clienti e dire in qualche modo zuccheriera disponibile solo una e fare in modo che: cliente prende zuccheriera, zuccherirera in uso..., fatto....e farlo m volte quante sono i clienti.
5) Affinche le tazzine (contanto il contenuto anche che non so come fare) le tazzine siano >0 fare il ciclo precedente una volta finito creare un'altro processo in cui i clienti vanno fumare la sigaretta.
6) Una volta fatto vedere che hanno finito, ritornano a prendere un'altro caffè e quindi penso che il barista da stato di waiting deve ripreparare n tazzine quanti i clienti....non so se è proprio così...
7) Questa non so proprio come fare: Il cliente che beve l'ultima tazzina di caffè sveglia il barista che sta leggendo.
8) E poi alla fine mi sono incasinato...e poi come devo terminarlo?
Vorrei almeno capire come fare è solo un'allenamento.... grazie per i vostri aiuti! Grazie infinite e buon lavoro.
Dopo in qualche modo vi aiuterò anche io potete chiedermi qualsiasi cosa a me...Vi dò anche il mio indirizzo se volete contattarmi:
quello che uso di più è: criscap@libero.it e crislovestefy@yahoo.it se il primo non va mandate sul secondo.
Grazie e cordiali saluti.
Cristian
aaa