Sobes.tech
Junior — Middle

Kā tiek īstenots savstarpējās izslēgšanas mehānisms, izmantojot Mutex Go valodā?

sobes.tech AI

Atbilde no AI

Go valodā, lai īstenotu savstarpēju izslēgšanu (mutex), tiek izmantots sync.Mutex tips. Tas ļauj aizsargāt kritiskās koda sekcijas no vienlaicīgas piekļuves vairākām gorutīnām, novēršot sacensību apstākļus.

Galvenās operācijas:

  • Lock() — bloķē mutex, liedzot citām gorutīnām piekļūt.
  • Unlock() — atbloķē mutex, ļaujot citām gorutīnām turpināt.

Piemērs lietošanai:

package main

import (
    "fmt"
    "sync"
)

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

    mu.Lock() // Bloķē mutex
    counter++
    fmt.Println("Skaitītājs:", counter)
    mu.Unlock() // Atbloķē mutex
}

Daudzšūnu vidē mutex garantē, ka tikai viena gorutīna vienlaikus izpildīs kodu starp Lock() un Unlock(), novēršot koplietošanas datu kļūdainas izmaiņas.