在我下面的代码中,只是整个代码的一部分。我初始化了一个频道,该频道无法消费或发布。我不知道是什么导致了这种情况。
//init at the beginning of program
var stopSvr chan bool
stopSvr=make(chan bool)
var stopSvrDone chan bool
stopSvrDone=make(chan bool)
//somewhere use,in a goroutine
select{
case <-stopSvr:
stopSvrDone<-true
fmt.Println("son svr exit")
default:
//do its job
}
//somewhere use,in a goroutine
stopSvr <- true //block here
<-stopSvrDone
fmt.Println("svr exit")
//here to do other things,but it's blocked at "stopSvr<-true",
//what condition could make this happen?
结论:通道的阻塞和解除阻塞,我不是很清楚。select{} expr 关键字'default',我不是很清楚。这就是为什么我的程序没有运行的原因。
摇曳的蔷薇
相关分类