Junior — Middle
Môžeš uviesť príklad, kedy a ako sa používajú kanály na výmenu dát medzi vláknami alebo gorutinami?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa kanály používajú na bezpečnú výmenu dát medzi gorutinami, čo umožňuje ich synchronizáciu a prenos hodnôt.
Príklad použitia kanála na prenos čísel z jednej gorutiny do druhej:
package main
import (
"fmt"
"time"
)
func producer(ch chan int) {
for i := 0; i < 5; i++ {
ch <- i // odoslanie dát do kanála
time.Sleep(time.Millisecond * 500)
}
close(ch) // zatvorenie kanála po odoslaní všetkých dát
}
func consumer(ch chan int) {
for val := range ch { // príjem dát z kanála
fmt.Println("Prijaté:", val)
}
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}
Tu producer posiela čísla do kanála a consumer ich číta. Kanály zabezpečujú bezpečný prenos dát bez potreby používania mutexov alebo iných synchronizačných mechanizmov.