Sobes.tech
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
}