Sobes.tech
Senior

Dopraveno 20 mlýnků na maso, 5 bylo odesláno — kolik zůstalo na skladě a jaký je aktuální stav v systému?

sobes.tech AI

Odpověď od AI

Если привезли 20 мясорубок и отгрузили 5, то на складе осталось 15 мясорубок.

Актуальное состояние в системе должно отражать это количество — например, в базе данных или в памяти приложения должно быть значение 15 для доступного запаса.

Важно обеспечить атомарность операции обновления состояния, чтобы избежать рассинхронизации. Например, если отгрузка и приемка происходят параллельно, нужно использовать механизмы синхронизации или транзакции, чтобы итоговое количество было корректным.

Пример на Go с использованием мьютекса для защиты состояния:

var (
    stock = 20
    mu    sync.Mutex
)

func ship(amount int) {
    mu.Lock()
    defer mu.Unlock()
    if stock >= amount {
        stock -= amount
    } else {
        // обработка ошибки: недостаточно товара
    }
}

func main() {
    ship(5)
    fmt.Println("Остаток на складе:", stock) // 15
}

Таким образом, состояние в системе — это текущее количество товара, отражающее все операции прихода и расхода.