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()-ների միջև գտնվող կոդը, ինչը կանխում է ընդհանուր տվյալների սխալ փոփոխությունները։