Sobes.tech
Senior

Foram entregues 20 moedores de carne, 5 foram enviados — quanto resta no armazém e qual é o estado atual no sistema?

sobes.tech IA

Resposta da IA

Se trouxeram 20 moedores de carne e enviaram 5, então no armazém ficaram 15 moedores.

O estado atual no sistema deve refletir essa quantidade — por exemplo, na base de dados ou na memória da aplicação deve haver um valor de 15 para o estoque disponível.

É importante garantir a atomicidade da operação de atualização do estado para evitar desincronizações. Por exemplo, se o envio e a recepção ocorrerem em paralelo, deve-se usar mecanismos de sincronização ou transações para que o resultado final seja correto.

Exemplo em Go usando um mutex para proteger o estado:

var (
    stock = 20
    mu    sync.Mutex
)

func ship(amount int) {
    mu.Lock()
    defer mu.Unlock()
    if stock >= amount {
        stock -= amount
    } else {
        // tratamento de erro: estoque insuficiente
    }
}

func main() {
    ship(5)
    fmt.Println("Restante no armazém:", stock) // 15
}

Assim, o estado no sistema é a quantidade atual de produto, refletindo todas as operações de entrada e saída.