Junior — Middle
Ako sa v systéme programovania vykonáva výmena signálov pomocou kanálov?
sobes.tech AI
Odpoveď od AI
V jazyku Go (Golang) sa kanály (channels) používajú na výmenu signálov a dát medzi gorutinami, čím zabezpečujú synchronizáciu a komunikáciu.
Kanál je typizovaný vodič, ktorým je možné odosielať a prijímať hodnoty. Odoslanie a prijatie na kanáli blokuje gorutinu, kým druhá strana nie je pripravená prijať alebo odoslať dáta, čo umožňuje efektívnu synchronizáciu vykonávania.
Príklad výmeny signálov pomocou kanála:
package main
import (
"fmt"
"time"
)
func worker(done chan bool) {
fmt.Println("Práca začala")
time.Sleep(time.Second) // simulácia práce
fmt.Println("Práca skončila")
done <- true // odoslanie signálu o ukončení
}
func main() {
done := make(chan bool)
go worker(done) // spustenie gorutiny
<-done // čakanie na signál o ukončení
fmt.Println("Hlavná funkcia je ukončená")
}
V tomto príklade sa kanál done používa na prenos signálu o ukončení gorutiny worker. Hlavná funkcia sa zablokuje na čítaní z kanála, kým nedostane signál, čo umožňuje správnu synchronizáciu vykonávania.