2012-12-12 126 views

回答

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) 
    } 
} 

所以他们都完成在同一时间。

+0

是的,你是好人,但为什么第一次goRoutine睡眠和其他例程等待呢? –

+0

好的,我明白了。它似乎只是goRoutines等待它,但事实上时间已经过去了一次,一个并发“时刻”正确吗? –

+5

让四个人在一起,并告诉他们等待四秒钟,然后说点什么。怎么了? – Dustin