Sobes.tech
Junior — Middle

Ինչպե՞ս է իրականացնում փոխադարձ բացառման մեխանիզմը Mutex-ով Go լեզվում։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում, փոխադարձ բացառման (mutex) իրականացնելու համար օգտագործվում է sync.Mutex տիպը: Դա թույլ է տալիս պաշտպանել կոդի կրիտիկական հատվածները միաժամանակյա մուտքից մի քանի goroutine-ներից, կանխելով մրցակցության պայմանները:

Հիմնական գործողություններ՝

  • Lock() — մուտք է գործում mutex-ը, խոչընդոտելով մյուս goroutine-ներին մուտք գործել:
  • Unlock() — բացում է mutex-ը, թույլ տալով մյուս goroutine-ներին շարունակել:

Օգտագործման օրինակ՝

package main

import (
    "fmt"
    "sync"
)

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

    mu.Lock() // Մուտք գործել mutex-ը
    counter++
    fmt.Println("Հաշվիչ՝", counter)
    mu.Unlock() // Բացել mutex-ը
}

Բազմամյա միջավայրում mutex-ը երաշխավորում է, որ միայն մեկ goroutine է միաժամանակ կատարում Lock() և Unlock()-ների միջև գտնվող կոդը, ինչը կանխում է ընդհանուր տվյալների սխալ փոփոխությունները։