Prossima revisione | Revisione precedente |
informatica:sol:laboratorio12:esercitazioni:esercitazione8 [02/05/2012 alle 08:52 (13 anni fa)] – creata Susanna Pelagatti | informatica:sol:laboratorio12:esercitazioni:esercitazione8 [04/05/2012 alle 07:37 (13 anni fa)] (versione attuale) – [Esercizio 3: Problema dei lettori e degli scrittori] Susanna Pelagatti |
---|
====== Esercitazione 8 ====== | ====== Esercitazione 8 ====== |
Questa esercitazione si concentra sui thread POSIX e sulle SC relative che abbiamo presentato. | Questa esercitazione si concentra sui thread POSIX. |
| |
====== Esercizio 1: Produttore e consumatore ====== | ====== Esercizio 1: Produttore e consumatore ====== |
In particolare, il thread produttore deve eseguire un ciclo infinito in cui genera un numero casuale ''r'', lo inserisce nella lista e poi si metta in attesa per 2 secondi (con una ''sleep''). Il thread consumatore esegue un ciclo infinito in cui estrae gli elementi dalla coda condivisa e li stampa sullo standard output.\\ | In particolare, il thread produttore deve eseguire un ciclo infinito in cui genera un numero casuale ''r'', lo inserisce nella lista e poi si metta in attesa per 2 secondi (con una ''sleep''). Il thread consumatore esegue un ciclo infinito in cui estrae gli elementi dalla coda condivisa e li stampa sullo standard output.\\ |
| |
**Estensione:** Fare in modo che produttore generi un numero fissato N di numeri casuali. Cancellare il consumatore quando il produttore ha terminato la generazione. Stampare l'esito di entrambi. | **Estensione:** Fare in modo che il produttore generi un numero fissato N di numeri casuali. Cancellare il consumatore quando il produttore ha terminato la generazione. Stampare l'esito di entrambi. |
| |
====== Esercizio 2: I filosofi a cena ====== | ====== Esercizio 2: I filosofi a cena ====== |
| |
I thread scrittori effettuano un ciclo infinito in cui generano casualmente una posizione ''i'' fra 0 ed NMAX - 1 ed un colore ''col'' ed assegnano a ''map[i]'' il colore ''col''. | I thread scrittori effettuano un ciclo infinito in cui generano casualmente una posizione ''i'' fra 0 ed NMAX - 1 ed un colore ''col'' ed assegnano a ''map[i]'' il colore ''col''. |
Ogni lettore effettuano un ciclo infinito in cui ad ogni iterazione contano il numero di occorrenze del proprio colore di riferimento nell'array e lo stampano sullo standard output. | Ogni lettore effettua un ciclo infinito in cui ad ogni iterazione conta il numero di occorrenze del proprio colore di riferimento nell'array e lo stampa sullo standard output. |
| |
Si richiede che piu' lettori possano accedere contemporaneamente all'array map per leggerne i valori. L'esecuzione dei thread scrittori deve invece avvenire in mutua esclusione con tutti gli altri thread. In particolare, non puo' esserci accesso contemporaneo all'array da parte dei due scrittori e neppure da parte di uno scrittore ed i thread lettori. | Si richiede che piu' lettori possano accedere contemporaneamente all'array map per leggerne i valori. L'esecuzione dei thread scrittori deve invece avvenire in mutua esclusione con tutti gli altri thread. In particolare, non puo' esserci accesso contemporaneo all'array da parte dei due scrittori e neppure da parte di uno scrittore ed i thread lettori. |
| |