|
写了一个Qt5的子线程运行定时器的测试程序,子线程是用movetToThread的方式,具体如下,
- TimerThread* timerInSubThread = new TimerThread();
- timerInSubThread->moveToThread(&m_thread); //使用moveToThread创建子线程的
- connect(&m_thread, SIGNAL(started()), timerInSubThread, SLOT(onCreateTimer())); //在线程启动的时候创建定时器
- connect(&m_thread, &QThread::finished, timerInSubThread, &QObject::deleteLater);
- m_thread.start();
复制代码
子线程定时器的时间间隔设置为5ms,
在定时器超时中断里面打印当前时间,并计算距离上次中断的时间的时间间隔,通过qDebug打印出来。当这个测试程序窗口处于最上面的话,定时器基本都能在5ms左右触发。
但如果将浏览器或者别的窗口切换到最上面时,定时器就会变为15ms中断一次,如下如所示,x轴是超时中断次数,y轴为距离上次超时的时间间隔。
有什么方法能子线程的运行不变慢吗?
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|