Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 2 Próxima »

En rutinas de procesamiento en entornos multiusuarios es común que dos usuarios soliciten el mismo procesamiento simultáneamente.
Ejemplo: El usuario A y B solicitan la liberación de todos los pedidos pendientes. En esta situación existen dos alternativas:

  • Bloquear la rutina para uso Monousuario.
  • Tratar la concurrencia.

El bloqueo de la rutina para uso Monousuario debe evitarse, pero si es necesario, debe realizarse por medio del uso de un semáforo. La función LockByName es la más recomendada para esta finalidad. Sin embargo, debe tomarse en cuenta el aislamiento necesario. Si la rutina es multiempresa, debe considerarse la empresa, si es multisucursal debe considerarse la sucursal en la formación de la clave de aislamiento. Ejemplo: Para que la rutina MATA330 esté aislada de todas las empresas y sucursales, debe utilizarse el Grupo de empresas en la formación de la clave de aislamiento LockByName("MATA330_"+cEmpAnt). Si solo es necesario el aislamiento de la sucursal, debe utilizarse la sucursal en la formación de la clave de aislamiento LockByName("MATA330_"+cFilAnt)
Tratar la concurrencia en rutinas de procesamiento es una tarea simple, que proporciona un enorme beneficio para el desempeño de la aplicación. Cuando dos usuarios ejecutan la misma rutina simultáneamente es mucho más probable que uno de los usuarios bloquee el registro principal y los otros se queden esperando la liberación del bloqueo. Después de la liberación del bloqueo, uno de los usuarios conseguirá realizar el bloqueo, pero no habrá procesamiento para realizar y el próximo registro ya estará bloqueado. Como se puede ver, no hay ningún beneficio para el sistema, además del perjuicio de consumo del hardware del Application Server.
Para que el sistema se beneficie con este tipo de situación es imprescindible el uso de la función SimpleLock. Esta función evalúa si el registro puede bloquearse y si no lo consigue, la rutina pasará al próximo registro y así sucesivamente, hasta la finalización del procesamiento. La gran ventaja de su uso es que, cuánto más llamadas haga el cliente a la misma rutina, más rápido será el procesamiento de la rutina.

Registros de la tabla

Momento

Llamada 1

Llamada 2

Llamada 3

10

1

Bloquea 10

Bloquea 11

Bloquea 12

11

2

Libera 10

Libera 11

Libera 12

12

3

Finaliza

Finaliza

Finaliza


Observe que este tipo de solución puede utilizarse en varios tipos de rutina de procesamiento, siempre y cuando haya un puntero para ejecución.

  • Sem rótulos