next up previous contents
Next: Comentarios Finales Up: Ejemplos Previous: Ejemplos

La sección crítica del objeto Transition

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.
\begin{figure}
\epsfxsize=360pt
\hspace{.1in}
\epsffile{transition.eps}
\end{figure}

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 up previous contents
Next: Comentarios Finales Up: Ejemplos Previous: Ejemplos
Amilcar Meneses
2002-11-08