[Examen Marzo 2011][Problema 2]

[Examen Marzo 2011][Problema 2]

de Andres Bello Ureta -
Número de respuestas: 2

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!!

En respuesta a Andres Bello Ureta

Re: [Examen Marzo 2011][Problema 2]

de Jorge Merlino -

El problema que veo es que hacés 19 V(cant_chocolates) pero no sabés si se hicieron 19 P()

Las cajas pueden tener más de un bombón de licor.