我有一个循环,它试图重复轮询到另一台服务器。我使用代码来实现此目的,但是程序反复显示100%的CPU使用率。
此行情收录器在goroutine中运行。 HTTP服务器在另一个goroutine中运行。
func() Monitor() {
abort := make(chan bool)
log.Info("Monitor started.")
// start the monitor goroutine
go func() {
defer log.Info("Stopped monitor")
ticker := time.NewTicker(time.Duration(35.0) * time.Second)
defer ticker.Stop()
log.Info("Monitor started! \n")
for {
select {
case t := <-ticker.C:
log.Infof("Subscribe to service at time %v\n",t)
if err := selfConn.SubscribeToService(); err != nil {
log.Errorf("Failed to subscribe to primary connector: %v",err)
}
case <-abort:
log.Info("Finished routine!")
return
default:
continue
}
}
}()
go func() {
time.Sleep(10 * time.Minute)
abort <- true
}()
}
但是,当监视器循环开始时,并且每次发送到股票行情通道的信号时,CPU都会始终显示100%。
我错过了在goroutine中使用代码来使它不会消耗100%的CPU的什么功能?