Junior — Middle
Jakie metody są używane do zapewnienia spójności danych podczas pracy z wieloma wątkami lub goroutines?
sobes.tech AI
Odpowiedź od AI
Aby zapewnić spójność danych podczas pracy z wieloma wątkami lub goroutines w Go, używa się następujących metod:
-
Muteksy (sync.Mutex) — blokują dostęp do współdzielonych danych, pozwalając tylko jednemu wątkowi lub goroutine na modyfikację danych w danym momencie.
-
Kanały (channels) — umożliwiają bezpieczne przesyłanie danych między goroutines, zapewniając synchronizację i wymianę wiadomości.
-
Pakiet sync/atomic — zapewnia operacje atomowe do pracy z podstawowymi typami danych bez blokad.
Przykład użycia muteksa:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Użycie kanałów do przesyłania danych:
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
Wybór metody zależy od konkretnego zadania oraz wymagań dotyczących wydajności i wygody.