Middle
Czym jest Mutex?
sobes.tech AI
Odpowiedź od AI
Mutex (wzajemne wykluczanie) to mechanizm synchronizacji w Go, który służy do zapobiegania jednoczesnemu dostępowi wielu gorutyn do wspólnych zasobów, takich jak zmienne czy struktury danych. Mutex gwarantuje, że w każdym momencie tylko jedna gorutyna może posiadać blokadę i wykonywać sekcję krytyczną kodu.
Przykład użycia sync.Mutex w Go:
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
licznik := 0
zwieksz := func() {
mu.Lock() // zdobycie blokady
defer mu.Unlock() // zwolnienie blokady
licznik++
}
var wg sync.WaitGroup
for i := 0; i < 1000; i++ {
wg.Add(1)
go func() {
defer wg.Done()
zwieksz()
}()
}
wg.Wait()
fmt.Println("Licznik:", licznik)
}
Bez Mutex wynik może być niepoprawny z powodu warunków wyścigu.