TCP里面超时重传机制,怎么用一个超时时钟实现超时重传,老师上课提的,书上每一组传送之前,都会设置一个超时时钟,为了节省空间,怎么只用一个超时时钟实现
设置一个定时器,在规定的时间内没有收到对方的回信视为消息丢失了,接着重新发送一份
参考timewheel
精度1 1 天
精度2 24 小时
精度3 24*60 分
精度4 24*60*60 秒
......
你可以想象成一个 挂在墙上的表,定时器定时根据精度 就像时针 分针 秒针 毫秒针 定时波动,墙上的表可以看做一个循环队列,表上的刻度 其实是一个链表,根据精度拨动针,看表每个刻度(链表)上是否有你的定时任务 ,如果有就取出来,处理尽量异步处理,而你只需要一个定时器,根据精度去定时查找是否有任务
但是定时器和返回时间就不对了,返回时间!=自己给的定时器时间
这样可以达到节省空间的目的吗
那你觉得怎么做是节省空间?
一个估计有点难。不过有个不成熟的想法:可以将分组按照时间给分区化,比如,一段时间内发送的分组,共用一个计时器。这样对于单个数据包的计时精度会降低,不过可以大大降低内存开销