Junior — Middle
Read-Write blokirovka (RWMutex) nima va u ma'lumotlarga kirishni boshqarishda qanday ishlatilishini tushuntiring.
sobes.tech AI
AIdan javob
Go'da O'qish-Yozish (RWMutex) blokirovka - bu sinxronizatsiya mexanizmi bo'lib, u bir nechta goroutine'larning ma'lumotlarni bir vaqtning o'zida o'qishiga imkon beradi, lekin yozish paytida eksklyuziv kirishni ta'minlaydi.
- RLock() / RUnlock() — o'qish uchun blokirovka. Bir nechta goroutine bu blokirovkani bir vaqtning o'zida ushlab turishi mumkin.
- Lock() / Unlock() — yozish uchun blokirovka. Faqat bitta goroutine uni ushlab turishi mumkin va bu vaqt davomida hech qanday o'qish ruxsat etilmaydi.
Bu ko'p o'qish operatsiyalari bo'lsa va yozish kam bo'lsa, unumdorlikni oshiradi.
Foydalanish misoli:
var rwMutex sync.RWMutex
var data int
func readData() int {
rwMutex.RLock()
defer rwMutex.RUnlock()
return data
}
func writeData(val int) {
rwMutex.Lock()
defer rwMutex.Unlock()
data = val
}
Bu misolda, bir nechta goroutinelar readData() ni bir vaqtning o'zida chaqirishi mumkin, lekin agar writeData() chaqirilsa, u barcha o'qish va yozish operatsiyalarini bloklaydi, ularning tugashigacha.