1 / 1
文档名称:

Qt程序等待-睡眠的正确方法.pdf

格式:pdf   页数:1页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Qt程序等待-睡眠的正确方法.pdf

上传人:翩仙妙玉 2012/9/16 文件大小:0 KB

下载得到文件列表

Qt程序等待-睡眠的正确方法.pdf

文档介绍

文档介绍:IT-Homer 专栏
成功是优点的发挥,失败是缺点的积累! 不为失败找理由,只为成功找
方法……
Qt程序等待/睡眠的正确方法
分类: QT 2011-05-18 21:56 278人阅读评论(0) 收藏举报
 
我们在编写Qt程序时经常会遇到这样的需求: 让程序等待一段时间, 这段时间里可能程序什么都不做, 也可能是
在后台开了个子线程在做一些用户看不见的工作。
首先我们容易想到的方法是使用类似linux提供的”sleep”或”usleep”函数。但用过这组函数的Qter都知道,
这组函数会将你当前的线程/进程变为“睡眠”状态。这个“睡眠”是深度意义的睡眠, 睡眠期间内核不会分配
给程序时间片, 所以程序什么都不做, 更不用提界面的刷新了。直接导致的问题就是用户无法与程序交互。所
以说直接使用sleep函数睡眠是常见的错误方案之一。
另外一种更常见的错误方法是使用QTimer+死循环。类似下面的代码:
QTimer t;
();
while(() < 250);
这个简单粗暴的解决方案也是行不通的。从代码中我们可以发现在while循环中不停的调用elapsed()函数, 等于
在这段时间内CPU完全没有机会做别的什么事情。特别是在Linux这样非抢占式的操作系统中, 这样的死循环造成
的影响是致命的, CPU被完全占用, 内核都没有机会调度进程, 别的程序拿不到时间片执行, 系统基本上就是瘫
痪状态了。无论如何, 这种结果都不是我们想要的。(当然拉, 除非你想写的是病毒程序。) 对于我们的程序
本身, 虽然它占用了所有的CPU, 但由于它陷入该循环, 程序没有机会进入到GUI事件循环, 导致同样界面是无
法刷新的。
其实把上面的代码稍加改变就能得到一个很好的解决方案。第一步, 解决界面无法刷新的问题。调用
QCoreApplication::processEvents(), 代码如下:
QTimer t;
();
while(() < 250)
{
QCoreApplication::processEvents();
}
第二步, 解决程序CPU占用率过高的问题-- 让程序适当睡眠。
QTimer t;
();
while(() < 250)
{
QCoreAp

最近更新

2024年幼儿园老师的辞职报告模板 6页

2024年幼儿园科学组教研计划4篇 8页

2024年幼儿园社会实践活动方案范文(通用15篇.. 33页

2024年幼儿园的安全防范计划(集合13篇) 39页

微纳米YBO3:Eu3+荧光粉的制备及发光性能研究.. 2页

2024年幼儿园期末家长会邀请函范文8篇 10页

少年闰土教学反思 22页

工程公司述职报告7篇 25页

师范生职业规划书(10篇) 45页

年级写人的作文经典(10篇) 12页

幼儿园教育教学工作计划(通用20篇) 80页

2024年事业单位招聘考试安徽省阜阳市职业能力.. 22页

2024年事业单位招聘考试云南省德宏傣族景颇族.. 21页

2024年幼儿园教师班主任述职报告(通用11篇).. 28页

2024年事业单位招聘考试江苏省泰州市职业能力.. 21页

2024年事业单位招聘考试陕西省汉中市职业能力.. 22页

2024年事业单位招聘考试江西省九江市职业能力.. 24页

2024年事业单位招聘考试黑龙江省职业能力倾向.. 21页

宪法晨读内容心得体会范文5篇(全文共4613字) 3页

室内设计师总监的主要职责 2 8页

健身房工作总结 3页

2024年乔迁宴主持开场白 15页

论老龄化形势下我国商业养老保险的发展论文 5页

会计基础模拟试卷a 12页

2023年贵州省贵阳市中考语文试卷 15页

心怀“国之大者”党课讲稿 4页

一百土地翻耕工序评定 2页

床椅转移操作流程 2页

宾馆治安管理制度 5页

艺术教育学 30页