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