定时器与线程的区别

22 篇文章 2 订阅

看项目代码的时候看到他们大部分会用到定时器,有时也会用到线程,到底线程和定时器有什么区别?

网上看了些解释:

定时器:程序中开启两个定时器,给人的假象是好像是同时进行。。。。其实不然,就是赤裸裸的串行,

除去定时器的串行运行,以及效率不说,他其实和线程差不多少。

如下看两个定时器的运行:

    QTimer *time=new QTimer;
    time->start(2000);
    connect(time,SIGNAL(timeout()),this,SLOT(slot_time1()));
    QTimer *time1=new QTimer;
    time1->start(3000);
    connect(time1,SIGNAL(timeout()),this,SLOT(slot_time2()));
    void MainWindow::slot_time1()
    {
        qDebug()<<"------------------time1-------------------";
        for(int i=0;i<30000;i++)
        {
            for(int n=0;n<65000;n++)
            {
                ;
            }
        }
        qDebug()<<"-------------------------------------------";
    }
    void MainWindow::slot_time2()
    {
        qDebug()<<"***********************time2****************";
        for(int i=0;i<60000;i++)
        {
            for(int n=0;n<65000;n++)
            {
                ;
            }
        }
        qDebug()<<"********************************************";
    }

在定时器1触发的时候,里面加入延迟,要是线程的话,马上就会运行第二个线程,但是定时器不是,直到第一个运行完毕,才会运行别的。


再看线程:

     mythread *th=new mythread;
     th->start();
     mythread1 *th1=new mythread1;
     th1->start();
     void mythread::run()
     {
         qDebug()<<"------------------time1-------------------";
                   this->sleep(2);
         qDebug()<<"-------------------------------------------";
     }
     void mythread1::run()
     {
         qDebug()<<"********************time2*************************";
                   this->sleep(4);
         qDebug()<<"**********************************************";
     }

程序开始线运行线程2,进行4s延迟,在这期间,并没有阻塞,而是去运行线程1  2s过后,再回到线程2。

总结:

所以在运行几个耗时的功能的时候,尽可能的去用线程,而不是定时器,虽然定时器很简单,容易维护。

但是定时器并没有减少程序的运行时间,以及内存。只不过是代码相对于好写,好维护些而已.















  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值