Junior — Middle
Go standart kutubxonasida qaysi turdagi o'zaro chiqarishlar (Mutex) amalga oshirilgan?
sobes.tech AI
AIdan javob
Go standart kutubxonasida, asosiy o'zaro chiqarish turi amalga oshirilgan: sync.Mutex. Bu oddiy mutex bo'lib, kodning kritik bo'limlarini bir vaqtning o'zida kirishdan himoya qilish uchun blokirovka va ochishni ta'minlaydi.
Shuningdek, sync.RWMutex mavjud — bu mutexning kengaytirilgan versiyasi bo'lib, bir nechta o'quvchilarga bir vaqtning o'zida blokirovka qilish imkonini beradi, lekin yozish eksklyuziv tarzda bloklanadi.
sync.Mutex dan foydalanish misoli:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Va sync.RWMutex bilan misol:
var rwMu sync.RWMutex
var data int
func readData() int {
rwMu.RLock()
defer rwMu.RUnlock()
return data
}
func writeData(val int) {
rwMu.Lock()
defer rwMu.Unlock()
data = val
}