Sobes.tech
Junior — Middle

O'zaro chiqarish (Mutex) nima va qanday ishlashini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Mutual exclusion (Mutex) — bu sinxronizatsiya mexanizmi bo‘lib, u shartda faqat bitta gorutina (ip) ma'lum bir resurs yoki kodning kritik bo‘limiga kirish huquqiga ega bo‘lishini kafolatlaydi.

Go tilida bu uchun sync.Mutex turi ishlatiladi. Gorutina Lock() chaqirganda, u mutexni bloklaydi, va boshqa gorutinlar Lock() chaqirishga harakat qilganda, ular mutex Unlock() bilan ochilguncha kutishadi.

Misol:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Bu misolda, increment counter qiymatini xavfsiz tarzda oshiradi, bir nechta gorutinlarning bir vaqtning o‘zida kirishini oldini oladi.