Sobes.tech
Middle

Mutex nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Mutex (müqəddəs müstəqillik) Go-da sinxronizasiya mexanizmidir və ümumi resurslara, məsələn, dəyişənlərə və ya məlumat strukturlarına eyni vaxtda bir neçə goroutine-nin girişini qarşısını alır. Mutex hər zaman yalnız bir goroutine-in kilidi tutmasına və kritik kod bölməsini icra etməsinə imkan verir.

Go-da sync.Mutex istifadə nümunəsi:

import (
    "fmt"
    "sync"
)

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

    increment := func() {
        mu.Lock()           // kilidi əldə et
        defer mu.Unlock()   // kilidi azad et
        counter++
    }

    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            increment()
        }()
    }
    wg.Wait()
    fmt.Println("Counter:", counter)
}

Mutex olmadan, nəticə düzgün olmaya bilər, çünki yarış şəraiti yaranır.