go语句之间的睡眠语句
Sleep statement between go statements
我今天在代码库中看到了以下设置。 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)
}
}
它确实有一个效果,它会等待 500 毫秒,然后下一个 goroutine 将尝试 运行 并启动 serverB。你是对的,并不能真正保证 serverA 会在那个时间内完全启动。
更好的策略是检查来自服务器 A 的某种信号,表明它已完全 运行ning,但不知道是什么类型的服务器,因此很难给出建议。
我今天在代码库中看到了以下设置。 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)
}
}
它确实有一个效果,它会等待 500 毫秒,然后下一个 goroutine 将尝试 运行 并启动 serverB。你是对的,并不能真正保证 serverA 会在那个时间内完全启动。
更好的策略是检查来自服务器 A 的某种信号,表明它已完全 运行ning,但不知道是什么类型的服务器,因此很难给出建议。