Sobes.tech
Junior — Middle

Jakou roli hrají primitives synchronizace v jazyce Go?

sobes.tech AI

Odpověď od AI

Primitivy synchronizace v jazyce Go se používají k řízení přístupu ke sdíleným zdrojům a ke koordinaci provádění gorutin, aby se zabránilo závodním podmínkám a zajistila správnost programu.

Hlavní primitives:

  • Mutex (sync.Mutex) — zajišťuje vzájemné vyloučení, umožňuje pouze jedné gorutině současně vykonávat kritickou sekci.
  • WaitGroup (sync.WaitGroup) — umožňuje čekat na dokončení skupiny gorutin.
  • Kanál — kanál pro přenos dat mezi gorutinami, který je sám o sobě mocnou primitives synchronizace.
  • RWMutex (sync.RWMutex) — umožňuje více gorutinám číst data současně, ale zápis blokuje všechny.

Příklad použití Mutex:

var mu sync.Mutex
var čítač int

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

Tímto způsobem primitives synchronizace pomáhají předcházet konfliktům při paralelním přístupu k datům a zajišťují správnou interakci mezi gorutinami.