Junior — Middle
Standart mutex va o'qish va yozish imkoniyatiga ega mutex (RWMutex) foydalanish o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Standart Mutex (sync.Mutex) Go da'vo resursga eksklyuziv kirish imkonini beradi: har bir vaqtda faqat bitta gorutina mutexni olishi mumkin, boshqalar kutishadi.
O'qish va yozish imkoniyatiga ega sync.RWMutex mutexi quyidagilarni amalga oshiradi:
- Bir nechta gorutinlar bir vaqtning o'zida mutexni o'qish uchun (RLock) olishi mumkin, agar yozuvchi bo'lmasa.
- Faqat bitta gorutin yozish uchun (Lock) mutexni olishi mumkin va bu barcha o'qishlar va boshqa yozuvchilarni bloklaydi.
Bu o'qish operatsiyalarining yozish operatsiyalaridan ko'proq bo'lganda, ularning bir-birini bloklamasligi uchun ishlash samaradorligini oshiradi.
Misol:
var mu sync.RWMutex
var data int
// O'qish
mu.RLock()
fmt.Println(data)
mu.RUnlock()
// Yozish
mu.Lock()
data = 42
mu.Unlock()
Agar oddiy Mutex ishlatilsa, hatto o'qishlar ham bir-birini bloklaydi, bu esa parallelizmni kamaytiradi.