Sobes.tech
Junior — Middle

Ce metode se utilizează pentru a asigura coerența datelor atunci când se lucrează cu mai multe fire sau goroutines?

sobes.tech AI

Răspuns de la AI

Pentru a asigura coerența datelor atunci când lucrați cu mai multe fire de execuție sau goroutines în Go, se utilizează următoarele metode:

  • Mutexuri (sync.Mutex) — blochează accesul la datele partajate, permițând doar unui singur fir sau goroutine să modifice datele la un moment dat.

  • Canale (channels) — permit transmiterea sigură a datelor între goroutines, asigurând sincronizarea și schimbul de mesaje.

  • Pachetul sync/atomic — oferă operații atomice pentru lucrul cu tipuri primitive de date fără blocări.

Exemplu de utilizare a unui mutex:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Utilizarea canalelor pentru transmiterea datelor:

ch := make(chan int)
go func() {
    ch <- 42
}()
value := <-ch

Alegerea metodei depinde de sarcina specifică și de cerințele privind performanța și comoditatea.