2012-12-12 96 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