首页| 论坛| 消息

标题:关于定时器的疑问
作者:tanyue.esec
日期:2023-11-28 17:48
内容:

有个需求是每分钟/十分钟执行一个任务,尝试了QTimer,QTimerEvent的方式,也尝试了setTimeerType的方式(=Qt::PreciseTimer)
最终的效果都是一样的,执行一段时间之后就有了几秒的偏差,不会在准点执行任务了。
Qt还有什么方式能保证在固定的时间点执行定时任务么


#1 [clickto 11-28 20:10]
QTimer本来不是一个高精度的定时器,但是也不至于差几秒钟吧
把定时器或要执行的任务放在单独的一个线程试试看
#2 [tanyue.esec 11-29 08:27]
也不是一次差出去这么多,每分钟执行一次,每次差个毫秒,累积起来就差出去好几秒了。
#3 [圣域天子 11-29 12:57]
QTimer触发后,执行代码的时间和它在同一线程内的。
执行结束后才会重新开始计算启始时间点,所以慢慢的时间就出现偏差了
要精确就必须要从最初时间点进行校正的
#4 [tanyue.esec 11-30 08:42]
这么看要精确定时执行,不能依赖api提供的配置了,只能靠进行校正了。
#5 [angelus 11-30 09:33]
有一种方案就是 每次只单次触发,但是每次触发的最后,再次调用一次计时器,但计时器会有一段代码进行时间的校对,看看和第一次触发超了多少,那么这次触发就减少多少

<< 1 2 >> (1/2)

回复 发表
主题 版块