Buenas.
Estoy intentando modelar el ejercicio 8 (Papá Noel y los duendes) pero no me termina de quedar claro los requerimientos precisos de la letra, más que nada el comportamiento del Niño.
El niño tiene que enviar una carta, que puede ser descartada si no hay duendes disponibles, y luego ejecutar un procedimiento para recibir el regalo.
De esto me surgen las siguientes dudas:
1) Estimo que es incorrecto que un niño espere incondicionalmente a que su regalo llegue, porque su carta puede ser descartada y en ese caso el niño queda en deadlock. De alguna forma va a necesitar saber si su carta fue aceptada. Lo que me lleva a:
2) ¿Sería aceptable que el niño "viera" si hay duendes disponibles (usar un mailbox para señalizar la cantidad de duendes libres) y solamente enviara la carta en ese caso? O alternativamente:
3) Las cartas podrían ser recibidas por un ayudante recepcionista de Papá Noel que encole la carta en un mailbox si hay duendes libres o descarte la carta en caso contrario y avise al niño sobre la admisión o no de su carta en otro mailbox.
Asumo que en cualquiera de los casos es admisible tener un array [1..n] of (mailbox of nil/Carta/etc) para asignar un mailbox por niño.
Saludos.