Middle
Ako môžu gorutiny komunikovať medzi sebou? Aké spôsoby synchronizácie existujú v Go?
sobes.tech AI
Odpoveď od AI
Gorutiny v Go môžu komunikovať medzi sebou pomocou kanálov (channels). Kanály umožňujú prenos hodnôt medzi gorutinami, zabezpečujúc synchronizáciu a výmenu dát.
Hlavné spôsoby synchronizácie v Go:
- Kanály (channels) — umožňujú bezpečný prenos dát medzi gorutinami a automaticky ich synchronizujú.
- Mutex (sync.Mutex) — slúži na ochranu zdieľaných zdrojov pred súčasným prístupom.
- WaitGroup (sync.WaitGroup) — pomáha čakať na dokončenie skupiny gorutín.
- Cond (sync.Cond) — podmienkové premenné pre zložitejšiu synchronizáciu.
Príklad použitia kanála na komunikáciu medzi gorutinami:
package main
import (
"fmt"
"time"
)
func worker(ch chan string) {
time.Sleep(time.Second)
ch <- "hotovo"
}
func main() {
ch := make(chan string)
go worker(ch)
msg := <-ch
fmt.Println("Práca gorutiny:", msg)
}