Professional Documents
Culture Documents
actica semanal 3
Panaderia Lamport
Autor: Jose Manuel Luque Gonzalez
Dise
no de sistemas concurrentes y distribuidos
1.
Dependiente.java
Normalmente, solo uno de los dos entrara y lanzara la excepcion contando como fallo
individual.
2.
ExceptionClientes()
3.
3.1.
Protecci
on meToca()
3.2.
Protecci
on turnos
Con el objetivo de evitar que tal y como se vio en el punto anterior dos clientes pasen
ambos el metodo meToca() se creara un array protector el cual hara que solo se mire a
quien le toca en caso de que no se este pidiendo turno.
Panaderia.pidiendoTurno[id] = true;
Panaderia.turno[id] =Panaderia.siguiente();
Panaderia.pidiendoTurno[id] = false;
for (int i = 0; i < Panaderia.N; i++)
{
while(Panaderia.pidiendoTurno[i])
Thread.yield();
while(!Panaderia.meToca(id, i))
Thread.yield();
}
Cuando se quita dicha proteccion se puede ver el fallo visto, debido a varios clientes
siendo atendidos, tal y como se ve en la figura 1