PROCEDURE P_bin BEGIN P(mutex); IF(hasCapacity) { hasCapacity = false; V(mutex); } ELSE { -> V(mutex); P(wait); } END P_bin
Entonces el problema fue al realizar V(mutex) ya estaríamos habilitando a que se ejecutase algún potencial V_bin bloqueado al intentar acceder a la zona crítica y podría ejecutar completamente antes de que nuestro proceso quede en wait, no depertando al mismo por el efecto del V (ya que quedaría bloqueado luego de la ejecuciòn del V_bin).
Entonces bàsicamente nuestras inquietudes son las siguientes:- En el caso de que nuestro P estuviese correcto, no habrìa quedado "indivisible" ya que "libero" la mutua exclusiòn dejando una sentencia para ejecutar concurrentemente "P(wait)".
- En el caso de que nuestro P estuviese correcto, no nos damos cuenta como realizar el V_bin para solucionar el caso mencionado.
Desde ya, muchas gracias por la ayuda!!