Me está resultando muy difícil entender el Segundo Algoritmo para el problema Lectores-Escritores. Entiendo el concepto general, que los escritores tendrán prioridad sobre los lectores (los lectores pueden morir de hambre). Incluso entiendo la implementación de la variable condicional de este algoritmo Reader/Writer Locks in C++. Sin embargo, la implementación de mutex del semáforo & no tiene sentido para mí. Este es un ejemplo de Wikipedia:Solución del Segundo Algoritmo para Lectores-Escritor
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]
No entiendo lo que los tres semáforos (mutex 3, r, y mutex 1) están en la cerradura lector. ¿No hay un semáforo suficiente para la cuenta de lectura?
¿Podría publicar un enlace al algoritmo o página de Wikipedia para asegurarse de que todos estamos mirando lo mismo? – gbulmer