我每秒都会连续调用一次函数foo(),以检查串行连接,
现在我的问题是,如果一秒钟过去,并且函数foo()在上次调用时未完成,将会发生什么,会先执行上一个函数还是将其暂停等?
checkConnection =new QTimer(this);
checkConnection->start(1000);
connect(checkConnection, SIGNAL(timeout()), this, SLOT(foo()));
答案 0 :(得分:2)
摘自https://doc.qt.io/qt-5/qtimer.html上的文档:
如果系统繁忙或无法提供所需的精度,则所有计时器类型的超时时间都可能晚于预期的时间。在这种情况下,即使多个超时都过期,Qt只会发出一次timeout(),然后将恢复原始间隔。
因此,似乎在任何时候队列中都只会存在一个计时器事件。
这意味着您当前正在执行的回调可能需要几秒钟才能完成,并且在此期间只有一个队列。