首页 新闻 会员 周边

关于golang time.Timer.Reset的问题

0
悬赏园豆:20 [待解决问题]

如上图,通过判断通道内部是否有数据被消费来选择性的消费已经有的数据,保证reset的正确实现,我想问的是这样实现没有并发问题么?如果在if判断的时候这个超时事件还没有过期,跳过消费数据的代码,然后这个协程被切换出去,后台定时器相关的协程执行,刚好这个Timer超时,往通道里写了数据,这样reset时仍然有数据在通道内没有被消费。
我觉得必须要更强的同步操作保证正确性,是这样么?如果不是的话如何理解这段代码,以及如何实现并发安全的reset操作。

p_n的主页 p_n | 初学一级 | 园豆:182
提问于:2020-09-23 22:45
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册