【发布时间】:2012-11-30 17:46:58
【问题描述】:
为什么只等待第一个 goroutine
func Sleep(d Duration)
http://golang.org/pkg/time
“睡眠暂停当前的 goroutine 持续时间 d。”
但其余部分直接执行。我认为导致频道c chan string,但我不了解两者之间的行为。
【问题讨论】:
标签: parallel-processing go goroutine
为什么只等待第一个 goroutine
func Sleep(d Duration)
http://golang.org/pkg/time
“睡眠暂停当前的 goroutine 持续时间 d。”
但其余部分直接执行。我认为导致频道c chan string,但我不了解两者之间的行为。
【问题讨论】:
标签: parallel-processing go goroutine
你所有的 goroutine 都是同时运行的,所以它们都同时休眠 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)
}
}
所以他们都同时完成。
【讨论】: