20210120再战timerticker(3)单独探讨下执行Stop后,不会再给time.C生产数据前的状态 - ziyouzy/2021blog GitHub Wiki
这篇文章没能get到核心问题
这是两个原子级事件,再次之间,确实是有可能有数据被生产,放入管道的可能性
同时timer和ticker都有可能出现这种情况,这里用类似图标的方式来绘制一下:
执行Stop()->Stop关闭生产者->timer超时->timer超时激活生产数据----管道内无数据,这是正常的
执行Stop()->timer超时->timer超时激活生产数据->Stop关闭生产者----管道内有数据,这是异常的
timer超时->timer超时激活生产数据->执行Stop()->Stop关闭生产者----管道内无数据,这是正常的
timer超时->执行Stop()->Stop关闭生产者->timer超时激活生产数据---管道内有数据,这是异常的
现在所考虑的是执行Stop()前或后,相邻两个“原子级”事件的执行时间相距极短的情况