【发布时间】:2020-01-01 22:40:30
【问题描述】:
我正在尝试在 Go 中构建一些短信号量。虽然当通道接收到信号时,它只是永远休眠。
我尝试过改变睡眠方式和睡眠时间,但它仍然只是永远停止。
这里是我尝试过的表示:
func main() {
backOffChan := make(chan struct{})
go func() {
time.Sleep(2)
backOffChan <- struct{}{}
}()
for {
select {
case <-backOffChan:
d := time.Duration(5 * time.Second)
log.Println("reconnecting in %s", d)
select {
case <-time.After(d):
log.Println("reconnected after %s", d)
return
}
default:
}
}
}
我希望它在打印日志消息并返回后才返回。
谢谢!
【问题讨论】: