He visto en esta wiki una buena página con algoritmos muy típicos resueltos en pseudocódigo y C usando semáforos; creo que me va a venir muy bien para ir preparando la asignatura de Programación Concurrente.. además me ha recordado la existencia de The Little Book of Semaphores, que tenía pensado leer hace meses y había olvidado por completo.
Me ha encantado esta solución al problema de los lectores y escritores; es bien simple, pero efectiva:
Lector:
reader() {
P(MUTEX);
readers++;
if(readers == 1) P(W);
V(MUTEX);
read;
P(MUTEX);
readers--;
if(readers == 0) V(W);
V(MUTEX);
}
Escritor:
writer() {
P(W);
write;
V(W);
}
Valores iniciales:
semaphore(MUTEX, 1);
semaphore(W, 1);
readers = 0;
PD: he estado varias horas recorriendo el blog asociado a dicha wiki; creo que es bastante recomendable echarle un vistazo, seguro que encontrais algo interesante 🙂
Hombre, gracias por poner esto. Justo estaba casi en lo mismo.
Un saludo!
LikeLike
[…] Algoritmos clásicos de concurrencia y sincronización […]
LikeLike
Gracias a tí, que me viene de perlas lo que has escrito de Java y programación concurrente 🙂
LikeLike