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,但不知道是什么类型的服务器,因此很难给出建议。