下面的代码永远运行,而不是在开始后停止一秒。 带有无限循环的go例程似乎阻止另一个发送到超时通道。这是正常的吗?去例程阻止其他人
func main(){
timeout:=make(chan int)
go func(){
time.SLeep(time.Second)
timeout<-1
}()
res:=make(chan int)
go func(){
for{
}
res<-1
}()
select{
case<-timeout:
fmt.Println("timeout")
case<-res:
fmt.Println("res")
}
}
这SO Q/A答案 http://stackoverflow.com/questions/12413510/why-is-this-go-code-blocking?rq=1 对不起那个。 – JulienFr