Junior — Middle
Kokie metodai naudojami siekiant užtikrinti duomenų nuoseklumą dirbant su keliais siūlais ar gorutinomis?
sobes.tech AI
Atsakymas iš AI
Norint užtikrinti duomenų nuoseklumą dirbant su keliais srautais arba gorutinomis Go kalboje, naudojami šie metodai:
-
Mutexai (sync.Mutex) — blokuoja prieigą prie bendro naudojimo duomenų, leidžiant tik vienam srautui arba goroutine keisti duomenis vienu metu.
-
Kanalai (channels) — leidžia saugiai perduoti duomenis tarp gorutinų, užtikrinant sinchronizaciją ir žinučių mainus.
-
sync/atomic paketas — teikia atomines operacijas dirbant su primityviais duomenų tipais be užraktų.
Pavyzdys naudojant mutexą:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Naudojant kanalus duomenų perdavimui:
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
Metodas pasirinkimas priklauso nuo konkrečios užduoties ir našumo bei patogumo reikalavimų.