为什么只用
等第一个goroutine func Sleep(d Duration)
http://golang.org/pkg/time
“睡眠暂停当前的goroutine持续时间d。”
但其余的是直接执行。我认为导致频道c chan string
,但我不理解两者之间的行为。
答案 0 :(得分:4)
所有你的例程都在同时运行,所以他们同时睡了4秒钟,因此它们都会同时结束。
你打电话给他们是这样的。go
表示所有getHostName
函数一次运行。
for i := 0; i < max; i++ {
go getHostName(haveHost, ipadresse_3, i)
}
这意味着所有睡眠都在同一时间发生
func getHostName(h chan string, ipAdresse string, n int) {
//Here!!!
time.Sleep(4 * time.Second)
ip := ipAdresse + strconv.Itoa(n)
//ip, ok := net.LookupAddr(ip)
if false {
h <- ip + " - "
} else {
h <- "error" + strconv.Itoa(n)
}
}
所以他们都在同一时间完成。