Sobes.tech
Middle

Ce este un Mutex?

sobes.tech AI

Răspuns de la AI

Mutex (excludere mutuală) este un mecanism de sincronizare în Go, utilizat pentru a preveni accesul simultan al mai multor goroutines la resurse comune, cum ar fi variabile sau structuri de date. Mutex garantează că, în orice moment, doar o goroutine poate deține blocarea și executa secțiunea critică a codului.

Exemplu de utilizare a sync.Mutex în Go:

import (
    "fmt"
    "sync"
)

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

    increment := func() {
        mu.Lock()           // obține blocarea
        defer mu.Unlock()   // eliberează blocarea
        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)
}

Fără Mutex, rezultatul poate fi incorect din cauza condițiilor de cursă.