我不确定在没有配置NTP服务器之类的Linux中计时如何工作。
我想知道是否有办法让我在Linux中更快地打发时间。例如,我想花1秒钟比正常速度快10000倍。
为澄清起见,我不想像重置时钟那样使时间跳动,我想提高滴答速度。
答案 0 :(得分:1)
仿真和尽可能快地重放传入的数据或事件通常需要此功能。
人们解决此问题的方法是他们有一个事件循环,例如libevent
或boost::asio
。当前时间是从事件循环中获得的(例如,返回epoll
的时间)并存储在事件循环变量 current time 中。而不使用gettimeofday
或clock_gettime
,而是从该当前时间变量中读取时间。所有计时器均由事件循环当前时间驱动。
模拟/重播时,将为事件循环当前时间分配下一个事件的时间戳,从而消除事件之间的持续时间,并尽可能快地重播事件。而且您的计时器仍可以像在实时事件中一样在事件之间工作并触发,而不会造成延迟。为了使此功能起作用,保存的事件流中的重放当然必须包含每个事件的时间戳。