Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Programma in C x S.O.: con semafori e monitor
Forum - C/C++ - Programma in C x S.O.: con semafori e monitor

Avatar
CrisLoveStefy (Normal User)
Newbie


Messaggi: 8
Iscritto: 08/08/2006

Segnala al moderatore
Postato alle 10:27
Venerdì, 01/12/2006
Questo topic è stato chiuso dal moderatore

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 ( :grr: ) 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

PM
Avatar
CrisLoveStefy (Normal User)
Newbie


Messaggi: 8
Iscritto: 08/08/2006

Segnala al moderatore
Postato alle 12:30
Venerdì, 08/12/2006
Dato che è un argomento di cui nessuno si è interessato, e faccio i miei complimentoni....mi arrangerò da solo. Ok? Poi non venitemi a cercare perchè tanto non vi aiuto grazie. Richieto la disattivazione del mio account.Forse è meglio e capirete :k:
:alert::k:
No risposta no post!

Ultima modifica effettuata da pierotofy il 30/12/2006 alle 4:01
PM
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 13:09
Venerdì, 08/12/2006
:ot: guarda che (come dice il regolamento) nessuno è obbligato a risponderti...questo non è un centro assistenza che tu paghi per cui le persone che ci stanno devono fornirti il servizio che tu paghi...le persone che sono qui sono individui normali che hanno i loro problemi, i loro impegni....insomma la loro vita...che ogni tanto aiutano la gente che posta perchè hanno 5 minuti liberi e "fanno il favore"...ma mica è un obbligo...
(poi poteva anche esserci il caso che nessuno sapeva la soluzione al tuo problema...)
buona giornata

Ultima modifica effettuata da Fr3d3R!K il 08/12/2006 alle 13:17
PM
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 4:00
Sabato, 30/12/2006
CrisLoveStefy mi spiace che nessuno sia stato in grado di rispondere al tuo topic, ma la colpa non è certo nostra.

Evidentemente a certa gente non è ben chiaro lo scopo di un Forum. Ho cancellato i posts offensivi e lascio aperto il topic nel caso qualcuno riuscirà a dare una risposta al nostro utente.



Il mio blog: https://piero.dev
PM
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 16:23
Sabato, 06/01/2007
visto che ha insistito a spammare ho tolto i nuovi post contro il regolamento e ora chiudo.

Ultima modifica effettuata da netarrow il 06/01/2007 alle 16:24
PM