Junior — Middle
Jak je v systému programování prováděna výměna signálů pomocí kanálů?
sobes.tech AI
Odpověď od AI
V jazyce Go (Golang) se kanály (channels) používají k výměně signálů a dat mezi gorutinami, čímž se zajišťuje synchronizace a komunikace.
Kanál je typovaný průchod, kterým lze odesílat a přijímat hodnoty. Odeslání a přijetí na kanálu blokují gorutinu, dokud druhá strana není připravena přijmout nebo odeslat data, což umožňuje efektivní synchronizaci provádění.
Příklad výměny signálů pomocí kanálu:
package main
import (
"fmt"
"time"
)
func worker(done chan bool) {
fmt.Println("Práce začala")
time.Sleep(time.Second) // simulace práce
fmt.Println("Práce skončila")
done <- true // odeslání signálu o dokončení
}
func main() {
done := make(chan bool)
go worker(done) // spuštění gorutiny
<-done // čekání na signál o dokončení
fmt.Println("Hlavní funkce dokončena")
}
V tomto příkladu je kanál done použit k přenosu signálu o dokončení gorutiny worker. Hlavní funkce se zablokuje na čtení z kanálu, dokud signál nedostane, což umožňuje správnou synchronizaci provádění.