informatica:sol:laboratorio21:esercitazionib:esercitazione7
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
informatica:sol:laboratorio21:esercitazionib:esercitazione7 [06/04/2021 alle 09:06 (4 anni fa)] – [Esercizio 3 (filosofi a cena)] Massimo Torquati | informatica:sol:laboratorio21:esercitazionib:esercitazione7 [08/04/2021 alle 08:14 (4 anni fa)] (versione attuale) – [Esercizio 2 (filosofi a cena)] Massimo Torquati | ||
---|---|---|---|
Linea 5: | Linea 5: | ||
Scrivere un programma C con due threads, un produttore (P) ed un consumatore (C). Il thread P genera, uno alla volta, una sequenza di numeri inserendoli in un buffer di una sola posizione condiviso con il thread C. Il thread consumatore estrae i numeri dal buffer e li stampa sullo standard output. Se il buffer e' pieno P attende che C consumi il dato, analogamente se il buffer e' vuoto C attende che P produca un valore da consumare. | Scrivere un programma C con due threads, un produttore (P) ed un consumatore (C). Il thread P genera, uno alla volta, una sequenza di numeri inserendoli in un buffer di una sola posizione condiviso con il thread C. Il thread consumatore estrae i numeri dal buffer e li stampa sullo standard output. Se il buffer e' pieno P attende che C consumi il dato, analogamente se il buffer e' vuoto C attende che P produca un valore da consumare. | ||
- | ===== Esercizio 2 (pipeline concorrente) ==== | + | ===== Esercizio 2 (filosofi a cena) ==== |
- | Scrivere un programma C che implementa una // | + | N filosofi siedono ad una tavola con un piatto di spaghetti davanti ed una forchetta alla loro destra ed una alla loro sinistra. Per mangiare gli spaghetti un filosofo ha bisogno di entrambe le forchette vicine (!). Ogni filosofo è impegnato ininterrottamente in una sequenza di 3 attivita': |
+ | Scrivere un programma C che attivi N threads filosofi (con N>=5), ognuno dei quali esegue il ciclo descritto in precedenza per 100 volte. La meditazione e la fase in cui il filosofo mangia deve essere implementata con un ritardo variabile usando ad esempio la chiamata di sistema '' | ||
+ | SUGGERIMENTO: | ||
+ | |||
+ | ===== Esercizio 3 (pipeline concorrente) ==== | ||
+ | |||
+ | Scrivere un programma C che implementa una // | ||
I tre stadi della pipeline devono lavorare in modo concorrente come in una " | I tre stadi della pipeline devono lavorare in modo concorrente come in una " | ||
- | ===== Esercizio | + | ===== Esercizio |
- | N filosofi siedono ad una tavola con un piatto di spaghetti davanti ed una forchetta alla loro destra ed una alla loro sinistra. Per mangiare gli spaghetti un filosofo ha bisogno | + | Estendere l' |
- | Scrivere un programma C che attivi N threads filosofi che eseguono il ciclo descritto in precedenza per 100 volte. La meditazione e la fase in cui il filosofo mangia deve essere implementata con un ritardo variabile usando ad esempio la chiamata | + | |
- | SUGGERIMENTO: | + | |
informatica/sol/laboratorio21/esercitazionib/esercitazione7.1617699993.txt.gz · Ultima modifica: 06/04/2021 alle 09:06 (4 anni fa) da Massimo Torquati