Sobes.tech
Junior — Middle

Aké úlohy rieši balíček sync v jazyku Go?

sobes.tech AI

Odpoveď od AI

Balík sync v jazyku Go poskytuje primitives synchronizácie na správu súbežného prístupu k zdrojom a koordináciu gorutín.

Hlavné úlohy, ktoré rieši balík sync:

  • Mutex (Mutex) — na ochranu kritických sekcií a zabránenie súbežného prístupu k zdieľaným dátam.
  • RWMutex — mutex s rozdelením na čítanie a zápis, ktorý umožňuje viacerým gorutinám čítať dáta súčasne, ale blokuje zápis.
  • WaitGroup — na čakanie na dokončenie skupiny gorutín.
  • Once — na vykonanie inicializácie iba raz.

Príklad použitia Mutex:

var mu sync.Mutex
var counter int

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

Týmto spôsobom balík sync pomáha bezpečne pracovať s konkurenciou a vyhýbať sa závodným podmienkam.