Hola tengo consulta,la letra del parcial es:
Hay un grupo de 5 funcionarios que consultan los registros de la base en busca de errores en lotes
de 100 registros (compartido entre los 5 funcionarios). Si encuentran un error en un registro deben
actualizar el mismo con la información corregida. Se debe permitir que varios funcionarios
consulten a la vez el mismo registro. Un funcionario que quiere modificar un registro deberá tener
prioridad sobre los que quieren leerlo.
Un funcionario A no podrá modificar un registro que haya sido modificado por otro funcionario B
luego de la lectura de A; en ese caso deberá volver a leer y verificar nuevamente el registro.
Un supervisor cambiará el lote de 100 registros periódicamente, para lo cual ningún funcionario
deberá estar usando el lote. El supervisor tendrá prioridad sobre los funcionarios para el acceso al
lote.
(se pide implementar con monitores)
en practico me dijeron que era peligroso llamar a un monitor dentro de otro monitor , que podria tener dedloks.
y mirando la solucion del ejercicio de este parcial lo hicieron , no entiendo bien por que la funcion lote.entra-funcionario(); esta dentro del monitor registro . Cuando yo lo hice lo puse por fuerta osea en el procedimiento funcionario y creo q no tendria problema .
Luego no se como modelar esto:
Un funcionario A no podrá modificar un registro que haya sido modificado por otro funcionario B
luego de la lectura de A; en ese caso deberá volver a leer y verificar nuevamente el registro.
Osea si llevo una especie de marca dentro de el monitor registro no sabria cuando desmarcarla, ej: tengo un bool y cuando modifico aviso para los que estan verificando este mismo registro que si llegan a querer modificar tendran que re-verificar.
Pero una vez que puse en true esa variable cuando se podria en false la misma? no logro darme cuenta.
El problema esta en que si yo estoy verificando un registo y entre que yo termine de verificar y fui a modificiar se me meta otro funcionario y me modifique antes que yo llegue a modificiar no?
Gracias.