我今天在代码库中看到了以下设置。 Sleep()函数有什么作用吗?我想可以保证serverA在serverB启动之前就已经在运行,但是由于两者的执行都可能推迟到以后,所以并不能真正保证对吧?
func main() {
go util.Execute("run", serverA)
time.Sleep(time.Millisecond * 500)
go util.Execute("run", serverB)
for {
log.Println("running")
time.Sleep(time.Second * 30)
}
}
答案 0 :(得分:1)
它的效果是,它将等待500 ms,然后下一个goroutine将尝试运行并启动serverB。而且您是正确的,它并不能真正保证serverA在该时间内完全启动。
更好的策略是检查来自serverA的某种信号,表明该服务器已完全运行,但不了解有关哪种服务器的信息将很难建议。