Lock: concepto y aplicación en variables
El concepto Lock se refiere a un mecanismo de sincronización diseñado para impedir la alteración simultánea del valor de una variable durante ejecuciones concurrentes.
En Skyone Studio, esta funcionalidad es esencial para garantizar la integridad de los datos, asegurando que el acceso de escritura a una variable específica ocurra de forma ordenada, independientemente de cuántas instancias de un flujo se estén procesando simultáneamente.

Cómo funciona en la práctica
En la práctica, el Lock actúa como un control de acceso secuencial. Cuando se activa, el sistema sigue una lógica de suspensión para evitar conflictos:
Bloqueo de Escritura: Si una ejecución está alterando el valor de la variable, cualquier otra ejecución que intente leer o sobrescribir esa misma variable será suspendida temporalmente.
Fila de Ejecución: La instancia suspendida espera hasta que la primera ejecución concluya su operación.
Consistencia de Contexto: Solo después de la liberación de la primera ejecución es que la siguiente podrá acceder y modificar el valor, garantizando que trabaje con el dato ya actualizado.
¿Por qué utilizar este recurso?
La finalidad principal del Lock es la prevención contra la pérdida de datos. En flujos de alta demanda, sin este control, una ejecución podría sobrescribir el valor de una variable antes de que la actualización anterior finalice, generando cálculos erróneos e inconsistencias en el proceso.
Ejemplo Comparativo: El impacto del Lock
Imagine que una variable llamada v_contador comienza con el valor 10. Dos instancias del flujo intentan sumar +1 al mismo tiempo.
Escenario A: Sin el uso del Lock (riesgo de inconsistencia)
En este escenario, las ejecuciones no se "ven" entre sí, lo que resulta en un error en el cálculo final.
Paso
Ejecución A (Instancia 1)
Ejecución A (Instancia 2)
Valor de la Variable
1
Lee el valor: 10
Lee el valor: 10
10
2
Calcula: 10+1=11
Calcula: 10+1=11
10
3
Graba el valor: 11
(Esperando CPU)
11
4
(Finalizada)
Graba el valor: 11
11 (Debería ser 12)
Escenario B: Con el Lock activo (garantía de integridad)
Con el recurso habilitado, el sistema organiza el acceso y el resultado final es preciso.
Paso
Ejecución A (Instancia 1)
Ejecución A (Instancia 2)
Valor de la Variable
1
Bloquea y lee: 10
Intenta leer y queda Suspendida
10
2
Suma 10+1=11
Esperando
10
3
Graba 11 y libera el Lock
Esperando
11
4
(Finalizada)
Retoma, lee el nuevo valor: 11
11
5
Suma 11+1=12 y graba
12 (Éxito)
Lea también: Variables.
Última actualización
¿Te fue útil?
