Saltar la navegación

Sincronización

Para que varios procesos colaboren en la solución de un problema es necesario que compartan información y recursos, pero esto debe ser controlado para asegurar la integridad y correcta operación del sistema.
En la vida cotidiana, nos encontramos con muchos ejemplos de sincronización, sin darnos cuenta.
Supongamos, por ejemplo, que coordinamos con un amigo para jugar un partido de ping pong. No podríamos empezar a jugar si no estamos los dos en la mesa de ping pong, pero cómo modelamos en redes de petri el hecho de que cada jugador espere al otro para comenzar el partido?
Como sabemos, las transiciones sólo está habilitadas cuando reciben un token por flecha de entrada, por lo que, son los elementos claves en los ejemplos de sincronización.
El ejemplo anterior, podría modelarse de la siguiente manera:
Cómo se puede ver en la imagen, cualquiera de los jugadores que llegue, no podrá avanzar sobre la transición "Empieza el juego" si el otro jugador aún no ha llegado. Luego de que ambos jugadores lleguen,  se habilitan la transición y permanecen en el sitio "Jugando" hasta que finalice el juego.

RESUMEN

Las transiciones son los elementos claves cuando se debe modelar, el hecho de esperar que lleguen dos o más objetos para que se de cierto evento.

Para Pensar...

¿Cómo extendería la solución para garantizar que sólo puedan jugar de a una pareja por vez?