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.

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.

A opção de ativar o uso de lock aparece na criação ou edição de uma variável

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 (Deveria ser 12)

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 (Sucesso)

Leia também: Variáveis.

Atualizado

Isto foi útil?