Junior — Middle
Jakie zadania rozwiązuje pakiet sync w języku programowania Go?
sobes.tech AI
Odpowiedź od AI
Pakiet sync w języku Go zapewnia prymitywy synchronizacji do zarządzania dostępem współbieżnym do zasobów i koordynacji gorutyn.
Główne zadania, które rozwiązuje pakiet sync:
- Mutex (
Mutex) — do ochrony sekcji krytycznych i zapobiegania jednoczesnemu dostępowi do wspólnych danych. - RWMutex — mutex z podziałem na odczyt i zapis, pozwalający wielu gorutynom odczytywać dane jednocześnie, ale blokujący zapis.
- WaitGroup — do oczekiwania na zakończenie grupy gorutyn.
- Once — do wykonania inicjalizacji tylko raz.
Przykład użycia Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
W ten sposób pakiet sync pomaga bezpiecznie pracować z konkurencją i unikać warunków wyścigu.