Sobes.tech
Middle

Šta je Mutex?

sobes.tech АИ

Одговор од АИ

Mutex (međusobno isključivanje) je mehanizam za sinhronizaciju u Go, koji se koristi za sprečavanje istovremenog pristupa više gorutina zajedničkim resursima, kao što su promenljive ili strukture podataka. Mutex garantuje da u svakom trenutku samo jedna gorutina može posedovati zaključavanje i izvršavati kritičnu sekciju koda.

Primer korišćenja sync.Mutex u Go:

import (
    "fmt"
    "sync"
)

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

    inkrement := func() {
        mu.Lock()           // sticanje zaključavanja
        defer mu.Unlock()   // oslobađanje zaključavanja
        brojač++
    }

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

Bez Mutex-a, rezultat može biti netačan zbog trkačkih uslova.