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

这篇具有很好参考价值的文章主要介绍了同个线程里,如果线程正在忙过程中,定时器时间到了会被延迟触发吗?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

在同一线程中,如果线程正在忙过程中,定时器的触发事件会被延迟,直到线程空闲下来才会被触发。这是因为在QT中,线程和定时器的处理都是通过事件循环来完成的。当线程处于忙碌状态时,事件循环将会被阻塞,直到线程执行完当前的工作才会继续运行事件循环,处理定时器的触发事件。

举个例子,假设我们在同一线程中创建了一个定时器,并将其定时器时间设置为1秒。随后,我们在线程中模拟了一个耗时操作,例如循环输出一些信息,并在每次循环结束后调用QThread::sleep()函数,以模拟线程正在执行某些耗时操作。在这种情况下,如果定时器的触发时间与线程忙碌的时间重叠,那么定时器的触发事件将会被延迟,直到线程执行完当前的工作才会被触发。

下面是一个简单的示例代码,演示了在同一线程中,当线程处于忙碌状态时,定时器的触发会被延迟的情况:

#include <QCoreApplication>
#include <QThread>
#include <QTimer>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTimer timer;
    connect(&timer, &QTimer::timeout, [](){
        qDebug() << "Timer triggered in thread";
    });
    timer.start(1000);

    for (int i = 0; i < 10; ++i) {
        qDebug() << "Thread working" << i;
        QThread::sleep(1);
    }

    return a.exec();
}

在这个例子中,我们创建了一个定时器,并将其定时器时间设置为1秒。随后,我们模拟了一个耗时操作,在循环中输出一些信息,并在每次循环结束后调用QThread::sleep()函数,以模拟线程正在执行某些耗时操作。在程序运行时,我们可以看到在线程处于忙碌状态时,定时器的触发事件会被延迟,直到线程执行完当前的工作才会被触发。

输出结果文章来源地址https://www.toymoban.com/news/detail-838125.html

Thread working 0
Thread working 1
Thread working 2
Thread working 3
Thread working 4
Thread working 5
Thread working 6
Thread working 7
Thread working 8
Thread working 9
Timer singleShot triggered in thread
Timer triggered in thread
Timer triggered in thread

到了这里,关于同个线程里,如果线程正在忙过程中,定时器时间到了会被延迟触发吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java多线程之定时器

    定时功能在java中主要是通过 Timer 类实现,因为它在内部还是使用多线程的方式进行处理,所以和多线程技术还是有非常大的管理 在JDK库中Timer类主要负责计划任务的功能,也就是在指定时间开始执行某一个任务,Timer类的主要功能就是设置计划任务,封装任务的类确是Timer

    2024年02月05日
    浏览(46)
  • Java多线程案例之定时器

    定时器是一种实际开发中非常常用的组件, 类似于一个 “闹钟”, 达到一个设定的时间之后, 就执行某个指定好的代码. 比如网络通信中, 如果对方 500ms 内没有返回数据, 则断开连接尝试重连. 比如一个 Map, 希望里面的某个 key 在 3s 之后过期(自动删除). 类似于这样的场景就需要

    2024年02月20日
    浏览(49)
  • 【javaEE】阻塞队列、定时器、线程池

    目录 🌴一、阻塞队列 1.概念 2.生产者消费者模型 3.阻塞队列的实现 🏹二、定时器 1.引出定时器 2.定时器的实现 🔥三、线程池 1.引出线程池 2.ThreadPoolExecutor 构造方法 3.标准数据库的4种拒绝策略【经典面试题】【重点掌握】 4.线程池的实现   1.概念 ✨对于队列,首先我们想

    2023年04月21日
    浏览(44)
  • 【QT】时间日期与定时器

    目录 1.时间日期相关的类 2.日期时间数据与字符串之间的转换 2.1 时间、日期编辑器属性设置 2.2 日期时间数据的获取与转换为字符串 2.3 字符串转换为日期时间 3.QCaIendarWidget日历组件 3.1基本属性 3.2 公共函数 3.3 信号 4.实例程序演示时间日期与定时器的使用 时间日期是经常

    2024年02月04日
    浏览(49)
  • JavaEE & 线程案例 & 定时器 & 线程池 and 工厂模式

    欢迎光临 ^ V ^ 定时器,可以理解为闹钟 我们设立一个时间,时间一到,让一个线程跑起来~ 而Java标准库提供了一个定时器类: Timer ,from java.util 1.1 定时器Timer的使用 1.1.1 核心方法schedule 传入任务引用(TimerTask task)和 “定时”(long delay / ms) 由于TimerTask不是函数式接口,

    2023年04月18日
    浏览(42)
  • 多线程案例 | 单例模式、阻塞队列、定时器、线程池

    单例模式 单例模式是 设计模式 的一种 什么是设计模式? 设计模式好比象棋中的 “棋谱”,红方当头炮,黑方马来跳,针对红方的一些走法,黑方应招的时候有一些固定的套路,按照套路来走局势就不会吃亏,也就发明了一组\\\"棋谱\\\",称为设计模式 软件开发中也有很多常见

    2024年02月15日
    浏览(47)
  • 【JavaEE初阶】多线程(四)阻塞队列 定时器 线程池

    概念 阻塞队列是一种特殊的队列. 也遵守 “ 先进先出 ” 的原则. 阻塞队列能是一种线程安全的数据结构, 并且具有以下特性: 当队列满的时候, 继续入队列就会阻塞, 直到有其他线程从队列中取走元素. 当队列空的时候, 继续出队列也会阻塞,直到有其他线程往队列中插入元素

    2023年04月26日
    浏览(53)
  • 【Java | 多线程案例】定时器的实现

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得,欢迎大家在评论区交流讨论💌 Java中, Timer类 是用于计划和执行重复任务的类( Java标准

    2024年02月03日
    浏览(42)
  • 第11章 定时器和时间管理

    相对于事件驱动而言,内核中有大量的函数基于时间驱动的。有些函数周期执行,对调度程序中的运行队列进行平衡调整或对屏幕进行刷新。有些函数需要等待一个相对函数后才运行。 周期性产生的事件都是由系统定时器驱动的,系统定时器是一个硬件,以固定频率产生中断

    2024年02月11日
    浏览(37)
  • STM32 定时器 周期 频率 时间 计算

    公式: T(溢出时间)=(ARR+1)*(PSC+1)/Tclk  ARR:自动重装载值 PSC:预分频系数 TCLK:时钟频率 例如:Tclk=72MHz ARR=719 PSC=999 那么 T=720*1000/72000000=1/100s 即每10ms溢出一次 中断计时一次 公式: f=1/T 频率就是周期的倒数   例如:Tclk=72MHz ARR=719 PSC=999 那么 f=72000000/720*1000=100Hz 即该定时器的

    2024年02月16日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包