Junior — Middle
Jaké způsoby přenosu dat se používají při interakci mezi gorutinami v Go?
sobes.tech AI
Odpověď od AI
V jazyce Go se pro komunikaci mezi gorutinami (lehkými vlákny) používají následující hlavní způsoby:
- Kanály (channels) — hlavní a doporučený způsob. Kanály umožňují bezpečně přenášet hodnoty mezi gorutinami, zajišťují synchronizaci a výměnu dat.
ch := make(chan int)
go func() {
ch <- 42 // odeslání hodnoty do kanálu
}()
value := <-ch // přijetí hodnoty z kanálu
-
Sdílené proměnné s synchronizací — použití sdílených dat s mutexy (
sync.Mutex) nebo jinými synchronizačními primitivy k zabránění závodním podmínkám. -
Balíček sync — poskytuje různé nástroje pro koordinaci gorutin, například
WaitGroup,Cond.
V Go je však běžné vyhýbat se sdílenému přístupu k paměti a upřednostňovat přenos dat přes kanály, což zjednodušuje vývoj a zvyšuje bezpečnost.