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.