Middle
Šta je Mutex?
sobes.tech АИ
Одговор од АИ
Mutex (međusobno isključivanje) je mehanizam za sinhronizaciju u Go, koji se koristi za sprečavanje istovremenog pristupa više gorutina zajedničkim resursima, kao što su promenljive ili strukture podataka. Mutex garantuje da u svakom trenutku samo jedna gorutina može posedovati zaključavanje i izvršavati kritičnu sekciju koda.
Primer korišćenja sync.Mutex u Go:
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
brojač := 0
inkrement := func() {
mu.Lock() // sticanje zaključavanja
defer mu.Unlock() // oslobađanje zaključavanja
brojač++
}
var wg sync.WaitGroup
for i := 0; i < 1000; i++ {
wg.Add(1)
go func() {
defer wg.Done()
inkrement()
}()
}
wg.Wait()
fmt.Println("Brojač:", brojač)
}
Bez Mutex-a, rezultat može biti netačan zbog trkačkih uslova.