【发布时间】:2016-10-19 12:20:10
【问题描述】:
我正在尝试使用 C 实现选择性重复协议以进行网络分配,但对于如何为每个单独的数据包模拟计时器感到困惑。我只能访问一个计时器,并且只能调用如下所述的函数。
/* start timer at A or B (int), increment in time*/
extern void starttimer(int, double);
/* stop timer at A or B (int) */
extern void stoptimer(int);
黑濑和罗斯在他们的网络教科书中提到
可以使用单个硬件定时器来模拟 多个逻辑计时器的操作 [Varghese 1997]。
我发现了类似assignment的以下提示
您可以使用单个物理计时器模拟多个虚拟计时器。基本思想是,您保持一系列虚拟计时器按其到期时间排序,并且物理计时器将在第一个虚拟计时器到期时关闭。
但是,我无法访问除 RTT 之外的任何时间变量,因为模拟器位于另一抽象层上。在这种情况下如何实现单个数据包的计时器?
【问题讨论】:
-
随心所欲地保留一个计数器数组。并在每个物理计时器滴答声中更新它们。此外,您可能希望为它们中的每一个添加一个单独的开始/停止指示器。
标签: c timer network-programming network-protocols