在c ++中实现调度程序(计时器)

时间:2018-06-04 14:17:16

标签: c++ timer scheduler chrono

我有一个以时间戳(抓取时间)记录的网络包转储。我想以他们到达时的速度发送它们来重新播放这些包。

问题是:C ++中是否有特定的工具来实现调度程序?

通常的答案是,发出第一个包,然后等待时间戳之间的差异:

auto now = std::chrono::high_resolution_clock::now();
auto diff = next_package_timestamp - current_package_timestamp;
std::this_thread::sleep_for(diff);

但是,我不喜欢这个解决方案有几个原因:

  1. 它不会占用较短的等待时间。如果事件的处理时间超过两个时间戳( diff )之间的差异,会发生什么?我必须使用单独的线程吗?我是否必须依靠信号进行计算?

  2. 它没有考虑漫长的等待时间。如果等待时间有几个弱点会怎么样?使用NTP时间是否会保持同步?我需要依靠石英钟吗?

  3. 我更喜欢

    template <class Functor>
    launch_at_specific_time(const time_t & time, Functor & functor);
    

    将在特定挂起时间调用仿函数的函数类型。

    是否有C ++实现Timer的方法?是否有一个通用的库,它已经完成了任务?

    提前谢谢你。

0 个答案:

没有答案