同个线程里,假如线程正在忙过程中,定时器时间到了会被延迟触发吗? ...

打印 上一主题 下一主题

主题 918|帖子 918|积分 2754

同个线程里,假如线程正在忙过程中,定时器时间到了会被延迟触发吗?

在同一线程中,假如线程正在忙过程中,定时器的触发事件会被延迟,直到线程空闲下来才会被触发。这是由于在QT中,线程和定时器的处理都是通过事件循环来完成的。当线程处于繁忙状态时,事件循环将会被阻塞,直到线程执行完当前的工作才会继续运行事件循环,处理定时器的触发事件。
举个例子,假设我们在同一线程中创建了一个定时器,并将其定时器时间设置为1秒。随后,我们在线程中模拟了一个耗时操纵,比方循环输出一些信息,并在每次循环竣事后调用QThread::sleep()函数,以模拟线程正在执行某些耗时操纵。在这种情况下,假如定时器的触发时间与线程繁忙的时间重叠,那么定时器的触发事件将会被延迟,直到线程执行完当前的工作才会被触发。
下面是一个简单的示例代码,演示了在同一线程中,当线程处于繁忙状态时,定时器的触发会被延迟的情况:
[code]#include #include #include #include int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    QTimer timer;    connect(&timer, &QTimer::timeout, [](){        qDebug()
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表