Middle
Mis on Mutex?
sobes.tech AI
Vastus AI-lt
Mutex (vastastikune välistus) on Go-s kasutatav sünkroniseerimismehhanism, mis takistab mitme goroutine'i samaegset juurdepääsu jagatud ressurssidele, näiteks muutujatele või andmestruktuuridele. Mutex tagab, et iga hetk võib ainult üks goroutine omada lukku ja täita kriitilise koodi sektsiooni.
Näide sync.Mutex kasutamisest Go-s:
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
increment := func() {
mu.Lock() // lukku võtmine
defer mu.Unlock() // lukust vabastamine
counter++
}
var wg sync.WaitGroup
for i := 0; i < 1000; i++ {
wg.Add(1)
go func() {
defer wg.Done()
increment()
}()
}
wg.Wait()
fmt.Println("Counter:", counter)
}
Ilma mutex'ita võib tulemus olla ebatäpne võistlusolukordade tõttu.