如果我正在通过股票频道调用stop(),则通道已停止但未关闭。Golang中的股票停止行为
在本例中:
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)
}
运行产生:
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
这样够程永远不会退出。有没有更好的方法来处理这种情况?我应该关心这个门厅从不退出吗?
如果执行程序没有退出,则会发生内存泄漏。调用close(ticker.C)以释放Go例程。 – fuz
无法关闭它:“无法关闭只接收频道” – whatupdave