各位大神,我写了一个测试服务器性能的小程序,程序的主体大概是:
var c chan int
func test() {
start_time := time.Now().Nanosecond()
resp, _ := http.Get(myUrl)
end_time := time.Now().Nanosecond()
c <- ((end_time - start_time)/1000000)
}
func main() {
c = make(chan int)
for i := 0; i < 20; i++ {
go test()
}
for i := 0; i < 20; i++ {
fmt.Println(<-c)
}
}
-------------------------------------------------------
理论来说打印的值应该是正的,可是在我比如说循环500次的时候,后半部的值就全变成负的,不解啊。
![QQ截图20150907102609.png](http://studygolang.qiniudn.com/150907/ee2993b9ee6beba967b6b2ce49177796.png)
协程里面的局部变量难道还共享吗?
Nanosecond()的值类型是int,随时间增加会溢出的。然后又从0开始。
应该这样用:
start := time.Now()
...
end := time.Now()
duration := end.Sub(start).Nanosecond()
....
#1