Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Como se usa
El prximo cdigo garantiza la sincronizacin entre el barbero y el cliente, pero puede llevar a que el cliente se quede sin silla. P() y V() son funciones provistas por el semforo. Se necesita: + + + + semaforo Cliente = 0 semaforo Barbero = 0 semaforo SillasAccesibles = 1 //MUTEX = objetos de exclusin mutua int SillasLibres = N //nro total de sillas
Funcin barbero (Proceso/hilo-thread): while(true) { //ciclo infinito P(Cliente) //si no tiene cliente se duerme P(SillasAccesibles) //ya est despierto y quiere modificar el nro de sillas SillasLibres++ //queda disponible una silla V(Barbero) // el Barbero est listo para cortar V(SillasAccesibles) //no se necesitan bloquear las sillas //el barbero corta el pelo, zona de cdigo no crtico } Funcin cliente (Proceso/hilo-thread):
P(SillasAccesibles) //trata de acceder a una silla if ( SillasLibres > 0 ) { //si hay sillas libres SillasLibres -- //se sienta en una V(Cliente) //avisa al barbero, el cual est esperando, que haya un cliente V(SillasAccesibles) // no se necesitan bloquear las sillas P(Barbero) // ahora le toca al cliente, pero espera si el barbero est ocupado //se le est cortando el pelo al cliente } else { // no hay sillas libres
Vase tambin
Problema de los filsofos cenando
Enlaces externos
Wikilibros tiene una solucin a este problema en el manual de Programacin en Ada
Licencia
Creative Commons Attribution-Share Alike 3.0 Unported http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/