Sobes.tech
Middle

Mi az a Mutex?

sobes.tech MI

Válasz az MI-től

A Mutex (kölcsönös kizárás) egy szinkronizációs mechanizmus Go-ban, amelyet arra használnak, hogy megakadályozzák több goroutine egyidejű hozzáférését a közös erőforrásokhoz, például változókhoz vagy adatszerkezetekhez. A Mutex garantálja, hogy minden pillanatban csak egy goroutine birtokolhatja a zárolást és hajthatja végre a kritikus szekciót.

Példa a sync.Mutex használatára Go-ban:

import (
    "fmt"
    "sync"
)

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

    increment := func() {
        mu.Lock()           // zárolás megszerzése
        defer mu.Unlock()   // zárolás feloldása
        counter++
    }

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

Mutex nélkül az eredmény helytelen lehet versenyhelyzetek miatt.