# Lock: conceito e aplicação em variáveis

O conceito Lock refere-se a um mecanismo de sincronização projetado para impedir a alteração simultânea do valor de uma variável durante execuções simultâneas.&#x20;

No **Skyone Studio**, essa funcionalidade é essencial para garantir a integridade dos dados, assegurando que o acesso de escrita a uma variável específica ocorra de forma ordenada, independentemente de quantas instâncias de um fluxo estejam sendo processadas simultaneamente.

<figure><img src="/files/wCOMGcf4ubSviSCnaqgc" alt=""><figcaption><p>A opção de ativar o uso de lock aparece na criação ou edição de uma variável</p></figcaption></figure>

#### Como funciona na prática

Na prática, o Lock atua como um controle de acesso sequencial. Quando ativado, o sistema segue uma lógica de suspensão para evitar conflitos:

* **Bloqueio de Escrita:** Se uma execução está alterando o valor da variável, qualquer outra execução que tente ler ou sobrescrever essa mesma variável será temporariamente suspensa.
* **Fila de Execução:** A instância suspensa aguarda até que a primeira execução conclua sua operação.
* **Consistência de Contexto:** Somente após a liberação da primeira execução é que a próxima poderá acessar e modificar o valor, garantindo que ela trabalhe com o dado já atualizado.

### Por que utilizar este recurso?

A principal finalidade do Lock é a prevenção contra a perda de dados. Em fluxos de alta demanda, sem esse controle, uma execução poderia sobrescrever o valor de uma variável antes que a atualização anterior fosse finalizada, gerando cálculos errados e inconsistências no processo.

#### Exemplo comparativo: o impacto do Lock

Imagine que uma variável chamada v\_contador começa com o valor 10. Duas instâncias do fluxo tentam somar +1 ao mesmo tempo.

**Cenário A: sem o uso do Lock (risco de inconsistência)**

Neste cenário, as execuções não se "enxergam", resultando em erro no cálculo final.

| **Passo** | **Execução A (Instância 1)** | **Execução A (Instância 2)** | **Valor da Variável**                                              |
| :-------: | ---------------------------- | ---------------------------- | ------------------------------------------------------------------ |
|     1     | Lê o valor: 10               | Lê o valor: 10               | 10                                                                 |
|     2     | Calcula: 10+1 = 11           | Calcula: 10+1 = 11           | 10                                                                 |
|     3     | Grava o valor: 11            | (Aguardando CPU)             | 11                                                                 |
|     4     | (Finalizada)                 | Grava o valor: 11            | 11 (<mark style="background-color:$danger;">Deveria ser 12</mark>) |

\
**Cenário B: com o Lock ativo (garantia de integridade)**

Com o recurso habilitado, o sistema organiza o acesso e o resultado final é preciso.

| **Passo** | **Execução A (Instância 1)** | **Execução A (Instância 2)** | **Valor da Variável**                                     |
| :-------: | ---------------------------- | ---------------------------- | --------------------------------------------------------- |
|     1     | Bloqueia e lê: 10            | Tenta ler e fica Suspensa    | 10                                                        |
|     2     | Soma 10+1=11                 | Aguardando                   | 10                                                        |
|     3     | Grava 11 e libera o Lock     | Aguardando                   | 11                                                        |
|     4     | (Finalizada)                 | Retoma, lê o novo valor: 11  | 11                                                        |
|     5     | …                            | Soma 11+1=12 e grava         | 12 (<mark style="background-color:green;">Sucesso</mark>) |

Leia também: [Variáveis](/skyone-studio/integracoes/fluxos/gestao-dos-fluxos/flow-canva-configuracao-e-edicao-do-fluxo/configuracao-do-fluxo.md#variaveis).&#x20;


---

# 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/skyone-studio/how-to/lock-conceito-e-aplicacao-em-variaveis.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.
