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