大量数据流传递的流控方式

对应中间的数据链路如没有办法知道有多少空间可以发送的情况,需要建立发送缓存区和接收缓存区,发送方都有可能PUSH不进数据到其中,所以要进行发送缓存区的设置,同时进行水线控制,过水线通过其他可靠链路发消息给对方,要求加快处理。发送方缓存满,停止操作。

接收方接收数据采用定时+消息触发的方式,这里为何不说轮询+中断的方式,应为描述更接近实现方式,轮询方式在多任务情况下,需要让渡处理时间给其他任务,不能一直循环POLL的数据,即使没有数据可POLL的情况下,任务可以让渡处理时间。这有一个极限的情况,如果发送方高速率发送数据,接收方单个任务刚好一直POLL,速率匹配,接收方一直POLL,任务变成死循环执行,这种情况将影响其他任务的执行。设计也可以是收一定数据后让渡,主动停下来,过一定时间后继续接收,这种方式就是定时查询方式,定时过程中可以来消息触发,任务又再次进行接收。

在设计实现的过程中,发送方有数据需要发送,会继续执行发送缓存中的数据发送,发送方如果没有这样的机制,可以让接收方在接收数据都完成的情况下,POLL不到数据,发送消息给发送方,发送方收到消息,触发将缓存中数据发送,在发的过程中有发不动,就数据还回缓存区,同时发消息给接收方,快点处理。

发送数据和接收,都需要判断各自缓存区是否有剩余空间,将数据发送到缓存区有多少发多少;接收方同样要判断接收缓存区有多少剩余空间,有多少就从链路中拉多少数据。

对应中间的数据链路有方法知道还有多少空间可以发送的情况下,发送缓存器设计中可以不需要,直接判断链路还剩下多少空间可以发送,有多少发多少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值