Junior
Co w Go zapewnia bezpieczeństwo wątków (thread safety)?
sobes.tech AI
Odpowiedź od AI
Bezpieczeństwo wątkowe w Go jest zapewnione przez kilka mechanizmów:
- Goroutines — lekkie wątki umożliwiające wykonywanie kodu równolegle.
- Kanały — główne narzędzie do bezpiecznej wymiany danych między goroutines bez użycia zmiennych współdzielonych.
- Pakiet sync — zawiera primitive synchronizacji, takie jak
Mutexdo blokowania sekcji krytycznych,RWMutexdo rozdzielenia blokad na odczyt i zapis orazWaitGroupdo oczekiwania na zakończenie grupy goroutines.
Przykład użycia mutexu do ochrony wspólnego zasobu:
import (
"sync"
)
var mu sync.Mutex
var licznik int
func inkrementuj() {
mu.Lock()
defer mu.Unlock()
licznik++
}
W ten sposób bezpieczeństwo wątkowe w Go osiąga się poprzez poprawne użycie goroutines, kanałów i primitive synchronizacji z pakietu sync.