Sobes.tech
Middle

Co je to Mutex?

sobes.tech AI

Odpověď od AI

Mutex (vzájemné vyloučení) je mechanismus synchronizace v Go, který se používá k zabránění současného přístupu více gorutin ke sdíleným zdrojům, například proměnným nebo datovým strukturám. Mutex zajišťuje, že v každém okamžiku může vlastnit zámek pouze jedna gorutina a vykonávat kritickou sekci kódu.

Příklad použití sync.Mutex v Go:

import (
    "fmt"
    "sync"
)

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

    inkrement := func() {
        mu.Lock()           // získání zámku
        defer mu.Unlock()   // uvolnění zámku
        čítač++
    }

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

Bez Mutex může být výsledek nesprávný kvůli závodním podmínkám.