使用计时器重复调用函数

时间:2019-08-07 08:48:21

标签: c++ qt

我每秒都会连续调用一次函数foo(),以检查串行连接,

现在我的问题是,如果一秒钟过去,并且函数foo()在上次调用时未完成,将会发生什么,会先执行上一个函数还是将其暂停等?

checkConnection =new QTimer(this);
checkConnection->start(1000);
connect(checkConnection, SIGNAL(timeout()), this, SLOT(foo()));

1 个答案:

答案 0 :(得分:2)

摘自https://doc.qt.io/qt-5/qtimer.html上的文档:

  

如果系统繁忙或无法提供所需的精度,则所有计时器类型的超时时间都可能晚于预期的时间。在这种情况下,即使多个超时都过期,Qt只会发出一次timeout(),然后将恢复原始间隔。

因此,似乎在任何时候队列中都只会存在一个计时器事件。

这意味着您当前正在执行的回调可能需要几秒钟才能完成,并且在此期间只有一个队列。