一个连续更新,高精度的时间供应器
2006-07-20 11:38:26 来源:WEB开发网核心提示: 尽管如此,我们还是有一个可靠的同步方法,一个连续更新,高精度的时间供应器(4),不必提升进程和线程的优先级,Figure 3 是这个方法实现步骤的基本流程图,但实际上还不能证明有问题,有关同步的更多信息及其精确性,Figure 3 可靠的同步你需要不断地检查看系统时间是否变化,就像 Fig
尽管如此,我们还是有一个可靠的同步方法,不必提升进程和线程的优先级。Figure 3 是这个方法实现步骤的基本流程图。
Figure 3 可靠的同步
你需要不断地检查看系统时间是否变化,就像 Figure 2 所示的 simplistic_synchronize 实现一样。同先前实现的最大不同之处是你现在也要用性能计数器本身去验证你始终保持于希望的精确级别。这听起来很简单,但仔细看看 Figure 3 便会看出它并不像想象的那么简单。需要进一步的解释,比如你为什么在 prev_diff 变量中保存性能计数器最近两个值之间的差异。原因是从系统时间被保存到t1的点到计数器值被保存到p1的点,系统时间可能会有潜在的变化而没有被检测到,直到下一次内部循环执行(才能检测到系统时间变化)。
接下来,你可能错误地假设在最新的两个计数器值之间(注:P1->P0)时间变化了,而实际上却没有。为了对此进行安全保证,你应该假定系统时间变化要么在最新的两个计数器值(注:即prev_diff)之间;要么在先前的两个计数器值之间(除了在循环内部发生了不可能的事件——该事件通过内部循环改变了最开始的时间)。在同步末尾,实现一个计数器值的调整;这可以保证返回值能够在希望的精度之内。Figure 4 显示了这个过程。
Figure 4 计算
这个同步方法需要多次迭代完成,但实际上还不能证明有问题。有关同步的更多信息及其精确性,你应该看一下本文副题 “同步:有多好?”。
频率问题
更多精彩
赞助商链接