Sobes.tech
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)
}