Sobes.tech
Senior

20 mol go'sht maydalash mashinasi yetkazildi, 5 ta jo'natildi — omborda qancha qoldi va tizimdagi hozirgi holat qanday?

sobes.tech AI

AIdan javob

Agar 20 molin qattiq olib kelsalar va 5 tasini jo'natsalar, omborda 15 moli qoladi.

Tizimdagi hozirgi holat bu miqdorni aks ettirishi kerak — masalan, ma'lumotlar bazasida yoki ilova xotirasida mavjud bo'lgan 15 qiymati bo'lishi kerak.

Holatni yangilash operatsiyasining atomarligini ta'minlash muhim, shunda sinxronizatsiya muammolari oldini olinadi. Masalan, jo'natish va qabul qilish parallel ravishda bo'lsa, yakuniy miqdor to'g'ri bo'lishi uchun sinxronizatsiya yoki tranzaktsiya mexanizmlaridan foydalanish kerak.

Go tilida holatni himoya qilish uchun mutexdan foydalanadigan misol:

var (
    stock = 20
    mu    sync.Mutex
)

func ship(amount int) {
    mu.Lock()
    defer mu.Unlock()
    if stock >= amount {
        stock -= amount
    } else {
        // xato bilan ishlash: yetarli bo'lmagan miqdor
    }
}

func main() {
    ship(5)
    fmt.Println("Ombordagi qolgan miqdor:", stock) // 15
}

Shu tarzda, tizimdagi holat — bu barcha kirish va chiqish operatsiyalarini aks ettiradigan joriy mahsulot miqdori.