Sobes.tech
Junior — Middle

Jak je zajištěno sladění práce více gorutin v Go?

sobes.tech AI

Odpověď od AI

V jazyce Go se koordinace práce více gorutin obvykle provádí pomocí kanálů (channels) a balíčku sync.

  • Kanály umožňují gorutinám vyměňovat data a synchronizovat provádění, blokováním odesílatele nebo příjemce, dokud nejsou připraveni.
  • sync.WaitGroup se používá k čekání na dokončení skupiny gorutin.
  • Mutex a další primitives z sync zajišťují bezpečný přístup ke sdíleným zdrojům.

Příklad použití kanálu pro synchronizaci:

ch := make(chan int)
func() {
    // Provádění práce
    ch <- 1 // signál o dokončení
}()

<-ch // čekání na signál

Tímto způsobem umožňují kanály a primitives synchronizace efektivně koordinovat paralelní úkoly.