Buenos días. Hice el código de este ejercicio y tenia varias dudas:
1- En la letra plante que hay 4 semáforos para sincronizar los procesos pero hice uso de solo 2 (auto_entrada,barco_entrada) y no veo donde son necesarios los otros dos (auto_salida,barco_salida).
2- En la linea 20 bloqueo con el semáforo auto_entrada. Al desbloquearse por el ultimo barco (que hace una cantidad de V(auto_entrada) igual a la cantidad de autos esperando) eventualmente podría venir otro barco después que se desbloqueo el auto y se viola la zona de mutua exclusión. Para evitar esto no podemos quedarnos con el control del semáforo contBarcosEnPuenteS porque sino los barcos no pueden circular por el puente. Y aquí la pregunta: en la linea 26 es considerado busy waiting ese while? No se queda esperando constantemente porque espera que el ultimo barco ("BarcoMolesto") lo despierte nuevamente para chequear la condición; pero no estoy seguro si es correcto hacer eso o si hay alguna alternativa mejor.
3- En el programa principal como puedo poner en ejecución concurrentemente N proceso auto y M proceso barco sin utilizar los "Task type" de ADA. (y que no sea escribir N veces y M veces )
Adjunto el código.
Muchas gracias.
Saludos.