Comportamento Ticker Stop em Golang
Se eu estiver passando por um canal de discagem e chamando stop (), o canal está parado, mas não fechado.
Neste exemplo:
package main
import (
"time"
"log"
)
func main() {
ticker := time.NewTicker(1 * time.Second)
go func(){
for _ = range ticker.C {
log.Println("tick")
}
log.Println("stopped")
}()
time.Sleep(3 * time.Second)
log.Println("stopping ticker")
ticker.Stop()
time.Sleep(3 * time.Second)
}
A execução produz:
2013/07/22 14:26:53 tick
2013/07/22 14:26:54 tick
2013/07/22 14:26:55 tick
2013/07/22 14:26:55 stopping ticker
Então essa goroutine nunca sai. Existe uma maneira melhor de lidar com este caso? Eu deveria me importar que a goroutine nunca saísse?