2.3 - Por que o controle de concorrência é necessário?
Vários problemas podem acontecer quando transações simultâneas são executadas de uma maneira descontrolada. Ilustramos alguns desses problemas ao nos referirmos a um sistema bancário de controle de conta corrente.
O exemplo a seguir apresenta duas operações bancárias acontecendo simultaneamente, uma, de um depósito bancário de R$100,00 e outra, de um pagamento de R$ 80,00.
| Tempo | Operação UM (depósito) | Operação DOIS (pagamento) |
|---|---|---|
| 1 | Ler saldo atual. | Ler saldo atual. |
| 2 | Sistema retorna R$ 1.000,00. | Sistema retorna R$ 1.000,00. |
| 3 | Processando o depósito: calcula saldo atual = saldo atual + R$ 100,00; saldo atual = R$ 1.100,00. | Processando o pagamento: calcula saldo atual = saldo atual – R$ 80,00; saldo atual – R$ 920,00. |
| 4 | Armazena R$ 1.100 como saldo atual no banco. | Armazena R$ 920,00 como saldo atual do banco. |
| 5 | Erro, pois o saldo atual real deveria ser R$ 1.020,00. |
Perceba que a segunda operação invalida a primeira e vice-versa, pois o saldo atual da segunda operação não pode mais ser considerado como o valor atual.