Golang实践经验和教训( 八 )
newTimeout := NewTimeoutHandler(synCallback session SYN_TIMEOUT_DURATION)
newTimeout.Register()
sessionTimeout[state
= newTimeout
该回调将在新的超时处理程序中重新安排时间 , 并更新全局sessionTimeout映射 。
数据竞争和引用
一个简单的测试是检查计时器到期后是否执行了超时回调 。 为此 , 注册一个超时 , 在其持续时间内休眠 , 然后检查回调操作是否已完成 。 执行测试后 , 最好取消预定的超时时间 , 因此不会在测试之间产生副作用 。 令人惊讶的是 , 这个简单的测试在发现了解决方案中的一个错误 。 使用cancel方法取消超时没有完成其工作 。 以下事件顺序将导致数据争用情况:
1.有一个计划的超时处理程序 。
2.线程1:
a)收到一个控制数据包 , 现在要取消注册的超时并进入下一个会话状态 。 (例如 , 发送了SYN后收到了SYN-ACK) 。
推荐阅读
- 原神|原神:不要专门跑去抽4星,以前的教训,让人印象深刻
- 手机游戏|于月仙事件的惨痛教训:不要雇佣一个“手游上瘾”的人!
- edg战队|FPX战胜EDG打出3个名场面,圣枪哥装杯被新人教训,Viper化身院长
- RNG|没有吸取DK的教训?RNG差点“翻车”,米勒说出心里话
- 梦幻西游|梦幻西游:男子沉迷于游戏,半年亏掉30多万,血与泪的教训!
- 大话西游|大话西游2(299)痛的教训!02年老玩家提示不要拿垃圾刷熟练度啊
- 暴雪|暴雪吸取了教训,《暗黑破坏神2:复活》测试的效果还不错
- 我的世界|我的世界:10个“过来人”的经验教训,处理好细节才能笑到最后!
- 华为|又想骗中国放弃自研?特朗普同意解封华为,损失1000亿后买来教训
- 华为|台积电之后,美国瞄准中芯国际?华为余承东:这是教训!