Sto attraversando un periodo difficile per capire il secondo algoritmo del problema dei lettori-scrittori. Capisco il concetto generale, che gli scrittori avranno la priorità sui lettori (i lettori possono morire di fame). Capisco persino l'implementazione della variabile condizionale di questo algoritmo Reader/Writer Locks in C++. Tuttavia, l'implementazione mutex del semaforo & non ha senso per me. Questo è un esempio da Wikipedia:Seconda soluzione algoritmo a Lettore-scrittore
int readcount, writecount; (initial value = 0)
semaphore mutex 1, mutex 2, mutex 3, w, r ; (initial value = 1)
READER
P(mutex 3);
P(r);
P(mutex 1);
readcount := readcount + 1;
if readcount = 1 then P(w);
V(mutex 1);
V(r);
V(mutex 3);
reading is done
P(mutex 1);
readcount := readcount - 1;
if readcount = 0 then V(w);
V(mutex 1);
WRITER
P(mutex 2);
writecount := writecount + 1;
if writecount = 1 then P(r);
V(mutex 2);
P(w);
writing is performed
V(w);
P(mutex 2);
writecount := writecount - 1;
if writecount = 0 then V(r);
V(mutex 2);
[http://en.wikipedia.org/wiki/Readers-writers_problem][2]
Non capisco quello che i tre semafori (mutex 3, R, e mutex 1) sono per nella serratura lettore. Non è sufficiente un semaforo per il conto?
Si prega di pubblicare un collegamento all'algoritmo o alla pagina di Wikipedia per garantire che tutti stiamo guardando la stessa cosa? – gbulmer