QT高精度定时器实现

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

第一个配置是高精度配置,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包数据,并且抓包,然后分析时间戳数据,分析每一包与第一包时间差并且减去等差数如图

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

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

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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值