Eccoci con un altro programmino in C che presenta un classico problema di sincronizzazione tra processi noto come problema dei LETTORI-SCRITTORI risolto con i semafori in linguaggio C, non è mia preoccupazione spiegare tale problema in quanto basta fare una ricerca per capire di cosa si tratta. Vale lo stesso per i semafori e le varie operazioni inerenti
il testo del problema è il seguente:
dentro lo zip c’è il solito makefile da lanciare con il comando make da una shell linux o unix, una volta compilato baserà lanciare ./main. Il codice è abbastanza commentato.
Il programma chiede all’utente quanti lettori e quanti scrittori creare, successiavamente il processo padre crea con la system call FORK n processi lettori e n scrittori. Per 10 volte ognuno, (modificabili da costante DELAY) gli SCRITTORI modificheranno la variabile condivisa (semplicemente incrementandola di 1) simulando un operazione sul database mentre i lettori leggeranno la variabile condivisa. Il programma gestisce l’alternanza tra gli uni e gli altri evitando agli scrittori di modificare contemporaneamente la variabile e ai lettori di non leggere se ci sono scrittori che incrementano ma contemporaneamente se non ci sono scrittori più lettori dovranno leggere contemporaneamente dal DB.
il programma inoltre evita i noti problemi di DEADLOCK e STARVATION.
download link:
e i digest:
MD5: 5bd9485ddca0ba759f9b7c7ba7199f9b
SHA1: 071543934456e4644d6624adcde07c240bf91ddf