1. 首页
  2. 主题
  3. Go问与答

大家对于golang10以及11中对timer.reset的非线程安全抛出怎么看?

mlzhou · · 1513 次点击
```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就相当于是摆设了。
这样写会增加gc压力,前面版本虽然非线程安全,但是不会抛出异常,跑了几年了,问题不大。
#3
更多评论
求置顶,求解决!不然没法升级。
#1
超时一般不是这么写么 ```golang select { case t:=&lt;-c: // do something case &lt;-time.After(time.Second*10): // time out } ``` 你这个怎么是用timer来做的?t.Reset 无论哪个版本都是非线程安全的。
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中