Sobes.tech
Junior — Middle

Millised vastastikused välistamised (Mutex) on Go standardraamatukogus implementeerinud?

sobes.tech AI

Vastus AI-lt

Standardsed raamatukogus Go on rakendatud peamine vastastikuse välistamise tüüp: sync.Mutex. See on lihtne mutex, mis tagab lukustamise ja vabastamise, et kaitsta kriitilisi koodiosi samaaegse juurdepääsu eest.

Lisaks on olemas sync.RWMutex — laiendatud mutexi versioon, mis võimaldab mitmel lugejal samaaegselt lukku hoida, kuid kirjutamine on eksklusiivselt blokeeritud.

sync.Mutex kasutamise näide:

var mu sync.Mutex
var counter int

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

Ja näide sync.RWMutex-ga:

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
}