Ver Mensaje Individual
  #8  
Antiguo 22-10-2012
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Reputación: 22
gatosoft Va camino a la fama
Amigo ASAPLTDA,

Espero que la solución dada por casimiro te sirva. Por mi parte voy a contarte una experiencia personal sobre el tema...

Una vez tuve que lidiar con un sistema cuya concurrencia sobre un registro era alta... y tuvimos que implementar unos controles adicionales... el que mas nos ayudó fue la "confirmación con retardo",

La situación era mas o menos la siguiente:

Cuando un usuario seleccionaba un registro libre, éste se marcaba con el código del usuario para bloquearlo (los demás lo veian no disponible)... pero las transacciones eran tan rápidas (en SQL server) que uno o mas usuarios podían marcar un registro en el mismo instante y el sistema les confirmaba transacción exitosa aunque al final la tabla mostraba solo a uno (El último que procesó la BD)

Código:
La transacción era algo asi como:

¿El registro esta libre? ==>
   Seleccinarlo
   ¿El registro quedó marcado con el usuario? ==>
   Mensaje al usuario: "OK. Ud. seleccionó el registro"

Como te decia, a varios usuarios les aparecía el OK al tiempo.... entonces implementamos la "Confirmación con retardo",la cual consistia en dejar pasar un segundo para hacer la pregunta ¿El registro quedó marcado con el usuario?, asi:
Código:
¿El registro esta libre? ==>
   Seleccinarlo
   Sleep(1 segundo) 
   ¿El registro quedó marcado con el usuario? ==>
   Mensaje al usuario: "OK. Ud. seleccionó el registro"
De esta manera la confirmación llegaba solo a un usuario... El segundo de retrado es irrelavante al lado de los problemas que te ahorras...

Espero que esta experiencia te sirva

un saludo,
Responder Con Cita