Sobes.tech
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í.