QT高精度定时器实现

1 使用QT自带定时器timer进行定时处理,Timer在实现中有精度配置

QT高精度定时器实现_第1张图片

第一个配置是高精度配置,try to keep 这个词用的很微妙,试图保持毫秒级别,代码入选 

    QTimer *timer_wave = new QTimer(this);
    connect(timer_wave, &QTimer::timeout, this,[&](){
        if(index == count)
        {
            timer_wave->stop();
            loop.quit();
        }
    });
    timer_wave->setTimerType(Qt::PreciseTimer);
    timer_wave->setInterval(time);
    timer_wave->start();

我使用10毫秒数据发送100000包数据,并且抓包,然后分析时间戳数据,分析每一包与第一包时间差并且减去等差数如图

QT高精度定时器实现_第2张图片

 纵坐标单位位秒,整体来看误差很小,但是局部误差还是比较大

2 实现高精度定时器我们还可以使用线程加延时的方式来进行,这种方式总体是可以进行把控。比较好理解。数据分析如下:

QT高精度定时器实现_第3张图片

 总体时间误差也是很少的,局部误差也很大。

从上面数据对比可以发现,都存在时间抖动,但是都有回归。我们常用的window系统是非实时系统,都会存在时间抖动,这个跟系统的性能和电脑任务状态存在一定关系.

你可能感兴趣的:(qt,开发语言)