Sobes.tech
Middle

Ինչ է Mutex-ը։

sobes.tech AI

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

Mutex (միմյանց բացառողություն)՝ դա սինխրոնիզացիայի մեխանիզմ է Go-ում, որը օգտագործվում է կանխելու միաժամանակյա մուտքը մի քանի goroutine-ների ընդհանուր ռեսուրսներին, օրինակ՝ փոփոխականներին կամ տվյալների կառուցվածքներին։ Mutex-ը երաշխավորում է, որ յուրաքանչյուր պահի միայն մեկ goroutine կարող է տիրապետել փակագծին և կատարել կոդի քննադատական հատվածը։

Օրինակ sync.Mutex-ի օգտագործումը Go-ում՝

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    հաշիվը := 0

    ավելացնել := func() {
        mu.Lock()           // փակագծի գրավում
        defer mu.Unlock()   // փակագծի ազատում
        հաշիվը++
    }

    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            ավելացնել()
        }()
    }
    wg.Wait()
    fmt.Println("Հաշիվը՝", հաշիվը)
}

Եթե Mutex չլինի, արդյունքը կարող է լինել սխալ՝ մրցակցության պայմանների պատճառով։