Letra: https://www.fing.edu.uy/inco/cursos/sistoper/examenes/2011/Sol2011MAR.pdf
Buenas,
Resolví el ejercicio de una forma distita a la solución pero me genera dudas su correctitud.
Para resolver que solo hayan 20 bombones por caja utilizo un semaforo "cant_bombones" inicializado en 20.
Luego si la máquina es de chocolate hace un P(cantt_chocolates). Este semforo se inicializa en 19, de forma de asegurarme que por lo menos haya 1 bombón de licor.
Luego cuando se pone un bombón en la caja controlo si es el numero 20 (esto multiexcluido para que dos o más procedimientos no accedan a la variable a la vez), en caso de ser el 20 entonces cambio la caja y hago 20 veces V(cant_bombones) y 19 veces V(cant_bombones)
Dejo el pseudo:
si soy chocolate
P(cant_chocolates)
P(cant_bombones)
//fabrico y pongo en caja
P(mutex)
cant ++
si hay 20
nueva_caja
V(cant_chocolates) //19 veces
V(cant_bombones)//20 veces
Es correcta la solución que planteo o alguno ve algún caso en que genere error?
Gracias!!