Sobes.tech
Junior — Middle

Akú úlohu zohrávajú primitives synchronizácie v jazyku Go?

sobes.tech AI

Odpoveď od AI

Primitívy synchronizácie v jazyku Go sa používajú na riadenie prístupu ku zdieľaným zdrojom a na koordináciu vykonávania gorutín, aby sa predišlo súťažným podmienkam a zabezpečila správnosť programu.

Hlavné primitívy:

  • Mutex (sync.Mutex) — zabezpečuje vzájomné vylúčenie, umožňujúc len jednej gorutíne súčasne vykonávať kritickú sekciu.
  • WaitGroup (sync.WaitGroup) — umožňuje čakať na dokončenie skupiny gorutín.
  • Kanál — kanál na prenos dát medzi gorutinami, ktorý je sám o sebe mocnou primitives synchronizácie.
  • RWMutex (sync.RWMutex) — umožňuje viacerým gorutinám čítať dáta súčasne, ale zápis blokuje všetkých.

Príklad použitia Mutex:

var mu sync.Mutex
var čítač int

func inkrementuj() {
    mu.Lock()
    defer mu.Unlock()
    čítač++
}

Takto primitives synchronizácie pomáhajú predchádzať konfliktom pri paralelnom prístupe k dátam a zabezpečujú správnu interakciu medzi gorutinami.