Sobes.tech
Junior — Middle

Go тилинде Mutex аркылуу өз ара чыгаруу механизми кандай ишке ашырылат?

sobes.tech AI

AIден жооп

Go тилинде өз ара чыгаруу (mutex) ишке ашыруу үчүн sync.Mutex тиби колдонулат. Ал коддун критикалык бөлүмдөрүн бир нече горутинден бир убакта кирүүдөн коргойт жана жарыш шарттарын алдын алат.

Негизги операциялар:

  • Lock() — mutexти байлайт, башка горутиндердин киришин бөгөттөйт.
  • Unlock() — mutexти ачат, башка горутиндерге иштөө мүмкүнчүлүгүн берет.

Колдонуу мисалы:

package main

import (
    "fmt"
    "sync"
)

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

    mu.Lock() // Mutexти байлайт
    counter++
    fmt.Println("Санаачык:", counter)
    mu.Unlock() // Mutexти ачат
}

Көп жиптүү чөйрөдө mutex бир убакта бир гана горутин Lock() жана Unlock() ортосундагы кодду аткаруусун кепилдейт, бул бөлүшүлгөн маалыматтарды туура эмес өзгөртүүнүн алдын алат.