Sobes.tech
Junior — Middle

Ar galite paaiškinti, kas yra tarpusavio išskyrimas (Mutex) ir kaip jis veikia?

sobes.tech AI

Atsakymas iš AI

Sąveikos išskyrimas (Mutex) yra sinchronizacijos mechanizmas, kuris garantuoja, kad tam tikru momentu tik viena gorutina (gija) gali pasiekti tam tikrą išteklių ar kodo kritinę sekciją.

Go kalboje tam naudojamas sync.Mutex tipas. Kai gorutina iškviečia Lock(), ji užrakina mutexą, ir kitos gorutinos, bandančios iškviesti Lock(), lauks, kol mutexas nebus atrakintas su Unlock().

Pavyzdys:

var mu sync.Mutex
var counter int

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

Šiame pavyzdyje increment saugiai padidina counter reikšmę, užkertant kelią kelių gorutinos vienalaikiam prieigai.