Sobes.tech
Junior — Middle

Кадом намудҳои истиснои мутақобил (Mutex) дар китобхонаи стандартии Go амалӣ шудаанд?

sobes.tech AI

Ҷавоб аз AI

У стандартнай бібліятэцы Go рэалізаваны асноўны тып узаемнага выключэння — sync.Mutex. Гэта просты мютэкс, які забяспечвае блакіроўку і разблакіроўку для абароны крытычных секцый кода ад адначасовага доступу.

Акрамя таго, ёсць sync.RWMutex — пашыраная версія мютэкса, якая дазваляе некалькіму чытачам утрымліваць блакіроўку адначасова, але запіс блакуецца выключна.

Прыклад выкарыстання sync.Mutex:

var mu sync.Mutex
var counter int

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

І прыклад з sync.RWMutex:

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
}