go语句之间的睡眠语句

时间:2018-10-25 13:45:05

标签: go goroutine

我今天在代码库中看到了以下设置。 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)
    }
}

1 个答案:

答案 0 :(得分:1)

它的效果是,它将等待500 ms,然后下一个goroutine将尝试运行并启动serverB。而且您是正确的,它并不能真正保证serverA在该时间内完全启动。

更好的策略是检查来自serverA的某种信号,表明该服务器已完全运行,但不了解有关哪种服务器的信息将很难建议。