L'esempio verte sempre sul problema dei lettori e degli scrittori. In questo caso gli scrittori inseriscono i dati in un buffer circolare di lunghezza definita dalla macro LUN, e si bloccano solo se il buffer è già pieno. L'unico thread che legge continua ad estrarre caratteri e si blocca solamente quando il buffer risulta essere vuoto.
Le strutture dati che si sono viste fino ad ora sono più che sufficienti per bloccare un thread in attesa che una certa condizione si verifichi. Appare anche più che logica la scelta di dividere i semafori nelle due tipologie di semafori di mutua esclusione e semafori di condizione. Manca però ancora un meccanismo sintattico che sia simile alle primitive semaforiche viste durante il corso e che fanno parte dei trattati classici di Sistemi Operativi.
Domanda: Nell'esempio è necessario che il thread lettore ottenga anche il semaforo di mutua esclusione? La risposta cambierebbe se ci fossero due thread che leggono? Giustificare la risposta con degli esempi.