关于time.Timer的疑问

p__n
  • 448

image

上图中,当需要reset一个时间的时候,如果这个事件当前已经超时,通道里已经有有数据,则需要先取出数据再进行reset,这个我可以理解,但是如图的实现方法不会导致并发错误么?
比如在if判断的时候条件不成立,然后当前协程被挂起,定时器相关协程执行,刚好这个事件超时,通道里被写入数据。然后当前协程被切回来并reset,但此时通道里已经有数据,导致被立刻唤醒?
如果我的理解有问题的话请问正确实现应该是什么样的

回复
阅读 470
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏