Next: Comentarios Finales
Up: Ejemplos
Previous: Ejemplos
La ejecución de PetrA implica que multiples hilos se ejecuten
y compartan la información que se encuentra almacenada en los lugares.
Para evitar problemas de candados mortales, se implantó el uso de
un candado (objeto NSLock, ver la clase Transition de
la sección 4.2.9). Para verificar que la ejecución
no causaría problemas se modelo en redes de Petri con PetrA.
La figura 5.5
Figure 5.5:
Modelado de el manejo de la sección crítica en la ejecucón
de los objetos Transition.
|
El lugar etiquetado con th indica cuanto hilos desean entrar en la
sección crítica. El lugar etiquetado con lock indica si el candado
esta encendido o nó. El lugar etiquetado con can, indica que el hilo
está verificando si puede ejecutarse (si cumplen las condiciones de
entrada). El lugar etiquetado con exe indica que está ejecutandose
la transición y se están cambiando los estado de la red de Petri.
Si el candado está disponible y, al menos, un hilo en th, entonces
la transición begin se ejecuta. Entonces se manda un token al lugar
can. Las transiciones yes y no pueden ejecutarse --estas
transiciones indican si el hilo que tiene el control tiene las condiciones
de entrada para ejecutarse--. Si se ejecuta no, entonces el hilo vuelve
a esperar su turno en th, y se libera el candado. Si se ejecuta la
transición yes, entonces el hilo pasa a ejecutar la transición en
la red de Petri. Finalmente, cuando se ejecuta la transición end, el
hilo regresa vuelve a esperar su turno y se libera el candado.
Next: Comentarios Finales
Up: Ejemplos
Previous: Ejemplos
Amilcar Meneses
2002-11-08