Buenas, tenía una consulta vinculada al problema del asunto y a la solución presentada en las diapositivas de Lectores-Escritores (variante II). Lo dejo a continuación:
Problema Febrero 2020
En este problema se utiliza el P(mutexTS) antes del P(try) para evitar qué una vez que haya llegado un TH a hacer P(try) se deba de hacer V(try) antes de dejar el mutexTS y por tanto se despierte TH, y no otro TS, lo cuál es correcto.
Problema Lectores-Escritores (variante II)
Sin embargo, en el problema de lectores y escritores (variante II) presentado en las diapositivas, en lectores se hace primero P(try) y luego P(mutexTS) pero esto creo que es erróneo debido qué podría suceder que un lector hace P(try), luego un escritor también hace P(try) y a tal punto no se debería permitir que más lectores ingresen, ya que son posteriores al escritor, pero esto no se cumple ya que si sucede que: otros lectores llegan y hacen P(try), cuando el primer lector hace V(try) no hay garantías de qué se despierte al escritor ya que podrían despertarse otros lectores, y estos luego leerán, pero son posteriores al escritor.
Una solución que propongo para lo anterior es basarnos en lo realizado en el Problema de Febrero 2020, y realizar el P(mL) antes del P(try) ya qué antes de liberar el mL que permitiría que otros lectores intentarán entrar, se hace el V(try) de modo qué si había un escritor esperando se despierte y si no lo había simplemente libere el mutex mL.
Duda general sobre estos problemas
Cuando se menciona qué cierta entidad tiene prioridad sobre cierta otra (por ej: los TH sobre los TS en el Problema de Febrero 2020), ¿cuál de las siguientes semánticas se le da a "tener prioridad"?
- Si hay un TS queriendo entrar y un TH llega posteriormente entonces entra TH.
- Si hay "N" TS queriendo entrar y un TH llega posteriormente, entonces entran estos "N" TS y no se permite que ingresen otros TS adicionales, ingresando TH luego de estos.