Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/01/2012, 17:23
AdRii
 
Fecha de Ingreso: agosto-2008
Mensajes: 96
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Exclusion mutua PHP acceso a MySQL

Pues con "Exclusión mutua en region critica" me refiero a que tengo un pedazo de mi código en PHP que hace una consulta a un elemento de una base de datos mysql y que modifica ese dato en función de su valor, al ser una aplicación web un cliente A puede intentar modificar el dato, mientras un cliente B lo lee, con lo cual quiero hacer la consulta y modificación del valor en Exclusion mutua, y a este pedazo de código se le llama region critica.

Por ejemplo: tenemos cliente A y cliente B

Y el codigo:

...
...
Lee mysql(datoX);
if datoX == x
Escribe mysql(datoX = Y);

y puede suceder lo siguiente, ya que nosotros no controlamos el planificador del sistema operativo del servidor.

Cliente A -> Lee mysql(datoX); "Ya tenemos el valor del dato"
if datoX == x "Entra en el if, ya que el dato fue leido antes"

Cliente B -> Lee mysql(datoX); "Ya tenemos el valor del dato"
if datoX == x "Entra en el if, ya que el dato fue leido antes"
Escribe mysql(datoX = Y); "El dato esta modificado"

Cliente A -> Escribe mysql(datoX = Y); ¡¡¡¡ ERROR !!!!

Si suponemos que el dato afecta al usuario.. el cliente A modificaria el dato que esta siendo usado y antes modificado por B, teniendo B un valor erroneo del dato.