Junior — Middle
Jak je implementován mechanismus vzájemného vyloučení pomocí Mutex v jazyce Go?
sobes.tech AI
Odpověď od AI
V jazyce Go se pro implementaci vzájemného vyloučení (mutex) používá typ sync.Mutex. Umožňuje chránit kritické sekce kódu před současným přístupem z více gorutin a zabraňuje závodním podmínkám.
Hlavní operace:
Lock()— zamkne mutex, zabrání přístupu dalších gorutin.Unlock()— odemkne mutex, umožní pokračování ostatním gorutinám.
Příklad použití:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Zamkne mutex
counter++
fmt.Println("Čítač:", counter)
mu.Unlock() // Odemyká mutex
}
V prostředí s více vlákny garantuje mutex, že pouze jedna gorutina vykoná kód mezi Lock() a Unlock() najednou, čímž se zabrání nesprávným změnám sdílených dat.