Concurrente 2021 1
Concurrente 2021 1
Initialization:
Lock mutex = new ReentrantLock();
Condition waitForAJob = mutex.newCondition();
boolean hasSignalled = false;
1) 1, 2, 7, 3, 4, 8, 9, 10, 1, 5, 3, 6 4) 1, 2, 3, 7, 4, 8, 9, 10, 5, 3, 6
2) 7, 1, 2, 3, 4, 8, 9, 1, 5, 6, 10 5) 1, 7, 2, 3, 4, 8, 9, 5, 10, 3, 6
3) 7, 1, 2, 3, 4, 8, 9, 5, 3, 6, 10
1
Examen 2: Bloqueo, Semáforos y Barreras Computación Concurrente
a) [1.0pt] Sabiendo que el virus es uno de los procesos, argumenta como podrı́a
violar la propiedad de la M exclusión. Muestra la ejecución.
b) [1.5pt] Agregando únicamente código y sin usar spins, modifica la clase para
prevenir un comportamiento inadecuado. HINT: Puedes lanzar una excepción
si se detecta un problema. Argumenta porque funciona tu solución.
2
Examen 2: Bloqueo, Semáforos y Barreras Computación Concurrente
5. Haz sido contrado por Greenpeace para intentar incrementar la población de las ba-
llenas que han tenido problemas de sincronización para encontrar pareja. El truco es
que para tener hijos, se necesitan tres ballenas, un macho, una hembra y otra para ju-
gar al casamentero, literalmente, para juntar las otras dos ballenas y avisarles cuando
el acto ha concluido. Cada ballena se representa por un proceso independiente y es ne-
cesario implementar los siguientes métodos Macho(), Hembra(), Casamentero().
Una ballena macho invoca Male() y espera hasta que haya una hembra y un casamen-
tero; del mismo modo, una ballena hembra debe esperar hasta que estén presentes
una ballena macho y un casamentero. Una vez que los tres están presentes, los tres
finalizan la invocación del método.