Sobes.tech
Junior — Middle

Kuidas on realiseeritud vastastikuse välistamise mehhanism Mutex abil Go keeles?

sobes.tech AI

Vastus AI-lt

Go keeles, vastastikuse välistuse (mutex) rakendamiseks kasutatakse tüüpi sync.Mutex. See võimaldab kaitsta kriitilisi koodilõike samaaegse juurdepääsu eest mitmest gorutist, vältides võistlusolukordi.

Peamised toimingud:

  • Lock() — lukustab mutexi, takistades teiste gorutide juurdepääsu.
  • Unlock() — avab mutexi, võimaldades teiste gorutide jätkata.

Kasutusnäide:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    counter := 0

    mu.Lock() // Lukustab mutexi
    counter++
    fmt.Println("Loendur:", counter)
    mu.Unlock() // Avab mutexi
}

Mitme-joonelises keskkonnas tagab mutex, et ainult üks gorutine täidab koodi Lock() ja Unlock() vahel korraga, vältides jagatud andmete valesid muudatusi.