关于golang time.Timer Reset方法的疑问

puck · · 184 次点击 · 开始浏览    置顶
![image.png](https://static.studygolang.com/200924/0cb1ffc0ac7bddf9149e8dd7b8302365.png) 上图中,当需要reset一个时间的时候,如果这个事件当前已经超时,通道里已经有有数据,则需要先取出数据再进行reset,这个我可以理解,但是如图的实现方法不会导致并发错误么? 比如在if判断的时候条件不成立,然后当前协程被挂起,定时器相关协程执行,刚好这个事件超时,通道里被写入数据。然后当前协程被切回来并reset,但此时通道里已经有数据,导致被立刻唤醒? 如果我的理解有问题的话请问正确实现应该是什么样的

有疑问加站长微信联系

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:812540095

184 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传