Sobes.tech
Senior

Dostarczono 20 maszynek do mięsa, 5 wysłano — ile zostało w magazynie i jaki jest aktualny stan w systemie?

sobes.tech AI

Odpowiedź od AI

Jeśli dostarczono 20 mielenek do mięsa i wysłano 5, to na magazynie pozostało 15 mielenek.

Aktualny stan w systemie powinien odzwierciedlać tę ilość — na przykład w bazie danych lub w pamięci aplikacji powinna być wartość 15 dla dostępnych zapasów.

Ważne jest zapewnienie atomowości operacji aktualizacji stanu, aby uniknąć rozbieżności. Na przykład, jeśli wysyłka i przyjęcie odbywają się równocześnie, należy użyć mechanizmów synchronizacji lub transakcji, aby końcowa ilość była poprawna.

Przykład w Go z użyciem mutexu do ochrony stanu:

var (
    stock = 20
    mu    sync.Mutex
)

func ship(amount int) {
    mu.Lock()
    defer mu.Unlock()
    if stock >= amount {
        stock -= amount
    } else {
        // obsługa błędu: niewystarczająca ilość
    }
}

func main() {
    ship(5)
    fmt.Println("Pozostało na magazynie:", stock) // 15
}

W ten sposób stan w systemie to aktualna ilość towaru, odzwierciedlająca wszystkie operacje przyjęcia i wydania.