# 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.&#x20;

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.

<figure><img src="/files/R02MlETlzLUQaurw1EsC" alt=""><figcaption><p>La opción para habilitar el uso de lock aparece al crear o editar una variable.</p></figcaption></figure>

### 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.

<table data-header-hidden><thead><tr><th width="145.5546875" align="center"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td align="center"><strong>Paso</strong></td><td><strong>Ejecución A (Instancia 1)</strong></td><td><strong>Ejecución A (Instancia 2)</strong></td><td><strong>Valor de la Variable</strong></td></tr><tr><td align="center">1</td><td>Lee el valor: 10</td><td>Lee el valor: 10</td><td>10</td></tr><tr><td align="center">2</td><td>Calcula: <span class="math">10+1=11</span></td><td>Calcula: <span class="math">10+1=11</span></td><td>10</td></tr><tr><td align="center">3</td><td>Graba el valor: 11</td><td>(Esperando CPU)</td><td>11</td></tr><tr><td align="center">4</td><td>(Finalizada)</td><td>Graba el valor: 11</td><td>11 (<mark style="background-color:$danger;">Debería ser 12</mark>)</td></tr></tbody></table>

**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.

<table data-header-hidden><thead><tr><th width="146.08203125" align="center"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td align="center"><strong>Paso</strong></td><td><strong>Ejecución A (Instancia 1)</strong></td><td><strong>Ejecución A (Instancia 2)</strong></td><td><strong>Valor de la Variable</strong></td></tr><tr><td align="center">1</td><td>Bloquea y lee: 10</td><td>Intenta leer y queda Suspendida</td><td>10</td></tr><tr><td align="center">2</td><td>Suma <span class="math">10+1=11</span></td><td>Esperando</td><td>10</td></tr><tr><td align="center">3</td><td>Graba 11 y libera el Lock</td><td>Esperando</td><td>11</td></tr><tr><td align="center">4</td><td>(Finalizada)</td><td>Retoma, lee el nuevo valor: 11</td><td>11</td></tr><tr><td align="center">5</td><td></td><td>Suma <span class="math">11+1=12</span> y graba</td><td>12 (<mark style="background-color:$success;">Éxito</mark>)</td></tr></tbody></table>

Lea también: [Variables](/espanol/skyone-studio/integraciones/flujos/gestion-de-los-flujos/flow-canva-configuracion-y-edicion-del-flujo/configuracion-del-flujo.md#variables).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.skyone.cloud/espanol/skyone-studio/how-to/lock-concepto-y-aplicacion-en-variables.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
