Esercizio 6.4
Simulare il famoso problema dei filosofi a tavola tramite dei thread.
In un tavolo circolare siedono
filosofi, con
pari, e ci sono
coltelli e
forchette (che rappresentano le risorse
condivise). Altrnativamente, sul tavolo sono disposti un filosofo, un
coltello, un filosofo, una forchetta, un filosofo, un coltello,
ecc. Ogni filosofo per mangiare ha bisogno sia del coltello che della
forchetta che stanno ai suoi lati.
Nel nostro programma, ogni filosofo è rappresentato da un thread
diverso. Ogni thread acquisisce la risorsa ``coltello'' e la risorsa
``forchetta'' (non necessariamente in quest'ordine), e quindi può
cominciare a mangiare. Dopo aver finito, rilascia le due risorse.
C'è il pericolo di deadlock? se si, qual'è la condizione che porta
al deadlock? Qualè la politica che sicuramente evita il deadlock?
Implementare il programma e verificare entrambe le politiche.