2007-09-22

使用流水线来实现并发

Views: 10406 | Add Comments

如果下层实现了错误检测, 那么上层可以使用正面确认和重传(PAR, Positive Acknowledgment and Retransmission)机制来实现可靠传输. 因为"发送并等待一个确认"这个操作主要的时间消耗在数据传输的线路上, 所以 PAR 对线路的利用率和传输速率很低.

提高传输速率的简单方法是使用多路传输, 同时采用多条 PAR 线路进行数据传输. 但是这样, 单条线路的利用率仍然很低. 另一种既提高线路利用率又提高传输速率的方法是对 PAR 进行流水线操作, 这样不需要增加传输线路.

一个报文的 PAR 包括发送, 确认, 重传3个子操作, 它们的间距是传输时延. 下面不考虑重传.

如果有多个报文要发送, 在第一个确认到来之前进行 snd_wnd 个报文的发送, 并且随着确认的到来, 进行后续的报文发送. 这样, 采用流水线方式发送, 可以总是保持线路在使用中, 传输速率为 v = snd_wnd/delay, 单位为报文.

要采用流水线, 那么原来的操作必须是可分解的, 而且必须为单个操作进行标识, 比如采用序列号.

流水线的实现方式:

1. 为每一步子操作配备一个缓冲区, 当需要进行下一步子操作时, 将操作放入下一步缓冲.

2. 对操作进行包装, 增加状态字段, 随着子操作的进行改变操作的状态.

Related posts:

  1. OS X 屏幕录制视频转 GIF 动画
  2. TCP协议思想和技术的广泛应用
  3. 滑动窗口机制简单理解
  4. Redis被bgsave和bgrewriteaof阻塞的解决方法
  5. LevelDB 写操作出现停顿的问题分析
Posted by ideawu at 2007-09-22 06:55:02

Leave a Comment