Junior — Middle
Jaké metody se používají k zajištění konzistence dat při práci s více vlákny nebo gorutinami?
sobes.tech AI
Odpověď od AI
Pro zajištění konzistence dat při práci s více vlákny nebo gorutinami v Go se používají následující metody:
-
Mutexy (sync.Mutex) — blokují přístup ke sdíleným datům, umožňují pouze jednomu vláknu nebo gorutině měnit data v daném okamžiku.
-
Kanály (channels) — umožňují bezpečný přenos dat mezi gorutinami, zajišťují synchronizaci a výměnu zpráv.
-
Balíček sync/atomic — poskytuje atomové operace pro práci s primitivními datovými typy bez zámků.
Příklad použití mutexu:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Použití kanálů pro přenos dat:
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
Volba metody závisí na konkrétním úkolu a požadavcích na výkon a pohodlí.