```package main
import (
"time"
)
func main() {
t := time.NewTimer(100 * time.Hour)
for i := 0; i < 8; i++ {
go func() {
for {
t.Reset(100 * time.Hour)
}
}()
}
select {}
}```
在实际应用中,收包通过chan控制,但都需要加定时来控制写入超时,如果timer.reset还需要加锁来处理的话,那么chan就相当于是摆设了。
超时一般不是这么写么
```golang
select {
case t:=<-c:
// do something
case <-time.After(time.Second*10):
// time out
}
```
你这个怎么是用timer来做的?t.Reset 无论哪个版本都是非线程安全的。
#2
更多评论