next up previous
Next: Version 1 Up: Pastas de té Previous: Pastas de té

Sección común

Se definen los pesos para cada tipo de pasta --pesoA, pesoB y pesoC--, y un tipo que representa a cada tipo de pasta:

CONST PesoA = ...;
CONST PesoB = ...;
CONST PesoC = ...;

TYPE TipoPasta = (pastaA, pastaB, pastaC);

El recurso compartido Mostrador, se especifica como una cola de tamaño finito --o un buffer acotado con orden FIFO--. De esta forma aseguramos que las peticiones --pastas-- son elegidas por el empaquetador respetando el orden de llegada al mostrador.

--------------------------------------------------------------------------
CAPSULA Mostrador;
  VAR mostrador : COLA.TipoCola (* valor inicial: Vacia(mostrador)=TRUE *);
OPERACION PonerPasta (pasta : TipoPasta);
   PRE: NOT (Llena (mostrador));
   POST: Poner (mostrador, pasta);
OPERACION TomarPasta (VAR pasta : TipoPasta);
   PRE: NOT (Vacia(mostrador))
   POST: pasta = Primero (mostrador)
--------------------------------------------------------------------------
TASK Horno (pasta : TipoPasta (* In *));
BEGIN
  LOOP
    << Producir "pasta" >>
    Mostrador.PonerPasta (pasta);
  END (* LOOP *)
END Horno;
----------------------------------------
TASK Retirador;
BEGIN
  LOOP
     Caja.RetirarCaja;
  END (* LOOP *)
END Retirador;
----------------------------------------
TASK Reponedor;
BEGIN
  LOOP 
     Caja.ReponerCaja;
  END (* LOOP *)
END Reponedor;
----------------------------------------



Angel Herranz Nieva
Thu Oct 31 20:18:28 MET 1996