[英]go routine with time duration
此代码的目的是使用go例程计算我的计算机和google.com之间的每个连接时间。但结果似乎是错误的。为什么时间不断增加。 这是怎么回事?
2013/12/04 16:10:41 www.google.com 597.175072ms
2013/12/04 16:10:41 www.google.com 608.161898ms
2013/12/04 16:10:41 www.google.com 614.527441ms
2013/12/04 16:10:41 www.google.com 620.51907ms
2013/12/04 16:10:41 www.google.com 630.052257ms
2013/12/04 16:10:42 www.google.com 654.539717ms
2013/12/04 16:10:42 www.google.com 659.144724ms
2013/12/04 16:10:42 www.google.com 1.282230659s
2013/12/04 16:10:42 www.google.com 1.353469764s
package main
import (
"log"
"net"
"net/http"
"time"
"sync"
)
var wg sync.WaitGroup
func main() {
url := "http://www.google.com"
for i := 0; i < 9; i++ {
wg.Add(1)
go request(url)
}
wg.Wait()
}
func dialTimeout(network, addr string) (net.Conn, error) {
return net.DialTimeout(network, addr, time.Duration(1*time.Second))
}
func request(url string) {
var t0, t1 time.Time
transport := http.Transport{
Dial: dialTimeout,
}
client := http.Client{
Transport: &transport,
}
t0 = time.Now()
_, err := client.Get(url)
t1 = time.Now()
if err != nil {
log.Println(err)
}
log.Println(url +" "+ t1.Sub(t0).String())
wg.Done()
}
也许这就是解释:您的代码是一种巧妙的方法, 可以将10个连接时间从最快到最慢排序 。 每个goroutine在完成后打印所需的时间,因此稍后打印更长的连接。 由于所有都基本上在同一时刻开始你看到“增加连接时间”但没有增加,最慢的只是缓慢和最后打印。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.