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.

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?
