next up previous contents
Next: Redes de Petri jerárquicas Up: Posibles extensiones de PetrA Previous: Redes de Petri con

Redes de Petri con tiempo

Las redes de Petri contiempo incorporan en valor del tiempo en su ejecución. Este valor toma importancia cuando se dispara una transición, entonces se toman los tokens de los lugares de entrada y después la transición deja pasar un período de tiempo (en el que se puede ejecutar alguna otra transición) y después continuar con la ejecución arrojando los tokens resultantes.

Para implantar el manejo de una red de Petri con tiempo hay que agregar un valor de tiempo como atributo de la transición, una vez que se ejecute el hilo asociado a ésta, se manda a dormir el tiempo deseado, y después se continúa la ejecución.

Se puede agregar una subclase de Transition con el atributo time, como el valor para dormir al hilo. El proceso de agregar esta clase al proyecto PetrA es muy similar a como se incorporaron las redes de Petri limitadas, ya que se debe incorporar una imagen con el nombre de la clase, y modificar la parte del inspector para que muestre los nuevos atributos del objeto.

La ejecución del hilo de la transición es el la que incorpora el tiempo como parte dinámica de la red. Así, el código de la sección crítica quedaría:

1 - (void)execute: (id)connections {
2  NSAutoreleasePool *localPool=[[NSAutoreleasePool alloc] init];
3    while ([superView isRunning]) {
4       while (![myLock tryLock])
5             sleep(); 
6       if ([self conditionsOK]) {
7           [self setCanRunTransition:YES];
8           [self eliminateInputs];
9           [myLock unlock]; 
10          yield(); 
11          [NSThread sleepUntilDate:
                [NSDate dateWithTimeIntervalSinceNow:[self time]]];
12          while (![myLock tryLock])
13                sleep(); 
14          [self appendOutputs];
15          [[self superview] display];
16      }
17      [myLock unlock];
18   }
19   [localPool release];
20   [NSThread exit];
21   return;
22 }
En este listado se observa, en las líneas 9, 10 y 11, que una vez que el hilo, que ha logrado entrar en la selcción crítica, ha eliminado los tokens de las entradas, libera el candado (para que otro hilo pueda ejecutar la el disparo de la transición a la que está asociado) y se duerme el lapso de tiempo que tiene relacionado. Después que este hilo a despertado, intenta entrar nuevamente a la sección crítica para escribir los tokens de sus lugares de salida.


next up previous contents
Next: Redes de Petri jerárquicas Up: Posibles extensiones de PetrA Previous: Redes de Petri con
Amilcar Meneses
2002-11-08