Originariamente inviato da programmerscafe
In genere per questo tipo di cose si usano i semafori e mutex. Quello che devi fare e' creare un sistema che consenta un solo processo scrittore alla volta e che consenta piu' processi lettori. I dettagli di implementazione dipendono dalle API che usi, e io non sono uno specialista di programmazione multithread comunque piu' o meno la cosa dovrebbe andare cosi':

se sono scrittore:
// questo si blocca finche' non ci non ne scrittori ne lettori
// e' consentito un solo scrittore alla volta
acquisisci mutex "scrittori"
scrivi
rilascia il mutex "scrittori"

se sono lettore:
// questo si blocca se ci sono scrittori ma entra se ci sono lettori
// sono consentiti piu' lettori alla volta
acquisici semaforo "lettori"
leggi qualcosa
riascia semaforo "lettori"

Il vero nocciolo del problema e' implementare un sistema di acquisizione di mutex/semafori che sia sicuro dato che per ottenere mutex scrittori si deve controllare il semaforo lettori e per ottenere il semaforo lettori si deve controllare anche il mutex scrittori. L'implementazione dell'acquisizione di mutex e semafori devono a loro volta essere sezioni esclusive (protette da mutex).

Non so se la stessa cosa si possa implementare con un singolo semaforo o se ci sono api che facilitano le cose, non lo escluderei del tutto.

Ciao
La mia idea è uguale alla tua
Non devo utilizzare librerie particolari, solo i mutex, eventualmente variabili di condizione e segnali