取以下代码片段:
func main() {
ch := make(chan int)
quit := make(chan int)
go func() {
for {
ch <- querySomePeriodicThing()
}
}()
// ...
loop:
for {
select {
case <-ch: handlePeriodicThing()
case <-quit: break loop
}
}
}
goroutine 应该在执行期间运行。当 select 语句从退出通道接收到一些东西时,它会跳出循环并结束程序,而不会尝试停止 goroutine。
我的问题:这是否会产生任何间歇性的不良影响,而这些不良影响在运行一次或两次时并不明显?我知道在其他语言中,线程应该在程序结束之前清理(即退出),但是会有所不同吗?假设querySomePeriodicThing()不打开文件描述符或套接字或任何不打开的东西。
缥缈止盈
慕运维8079593
相关分类