Middle+
Ki kell zárnia a csatornát?
sobes.tech MI
Válasz az MI-től
A csatornát létrehozónak be kell zárnia azt, és nem szándékozik több adatot küldeni bele. Ez fontos annak érdekében, hogy elkerüljük a pánikot, amikor megpróbálunk adatokat küldeni egy lezárt csatornára, és hogy a fogadók helyesen tudják meghatározni az adatfolyam végét.
Fő szabályok:
- A küldő akkor zárja be a csatornát, amikor már nem fog értékeket küldeni.
- A fogadóknak nem szabad bezárniuk a csatornát.
- A csatorna bezárása jelzi a fogadóknak, hogy több adat nem lesz.
Példa:
func producer(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // A csatorna bezárása az összes adat küldése után
}
func consumer(ch <-chan int) {
for val := range ch {
fmt.Println(val)
}
// Amikor a csatorna zárva van, a ciklus befejeződik
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}