关于休眠和睡眠的区别、

3050人阅读
qt学习(50)
第一部分:
关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片。当经过指定的时间间隔后,再启动线程,继续执行代码。sleep函数并不能起到定时的作用,主要作用是延时。在一些多线程中可能会看到sleep(0);其主要目的是让出时间片。sleep函数的精度非常低,当系统越繁忙的时候它精度也就越低,有时候我们休眠1秒,可能3秒后才能继续执行。它的精度取决于线程自身优先级、其他线程的优先级,以及线程的数量等因素,所以说sleep函数是不能用来精确计时的。
Qt为我们提供了几个可以用于线程Sleep的函数,分别是:
void QThread::sleep ( unsigned long secs ) & [static protected]
void QThread::msleep ( unsigned long msecs ) & [static protected]
void QThread::usleep ( unsigned long usecs ) & [static protected]
sleep的单位分别是秒、毫秒、微秒。
但是现在问题出来了,请仔细看上面的函数定义,函数的访问权限都是protected,这就意味着,我们必须在QThread或者他的继承类中使用这三个函数。
但是我们可能需要在非继承QThread的类中来使用sleep函数。那这该这么办呢?下面我就给大家提供几种解决方法。
1. & &processEvents
& & QTime dieTime = QTime::currentTime().addMSecs(svalue);
& & while( QTime::currentTime() & dieTime )
& & QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
调用processEvents会让Qt继续处理线程所在的消息队列中未处理的消息,直到消息队列中没有消息可以处理。当进行长时间的操作的时候可以调用此函数(比方说拷贝文件)。这个函数可能和我们要使用msleep的本意有差别,但是使用它可以在svalue时间内处理events,从而达到类似sleep的目的。
2. & & & &QWaitCondition
& & & &QWaitC
& & & &wait.wait(time);
wait的单位是milliseconds,但是wait和sleep的作用是不同的。
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非
(a)“醒来”的线程具有更高的优先级。
(b)正在运行的线程因为其它原因而阻塞。
wait()会使调用它的线程暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
3. & & & &查看sleep的源代码,使用Qt在win下和*nix下的sleep函数。
Windows下的sleep的代码为:
void QThread::sleep(unsigned long secs)
& & ::Sleep(secs * 1000);
sleep的单位为秒。
*nix下sleep的代码为:
void QThread::sleep(unsigned long secs)
& & gettimeofday(&tv, 0);
& & ti.tv_sec = tv.tv_sec +
& & ti.tv_nsec = (tv.tv_usec * 1000);
& & thread_sleep(&ti);
static void thread_sleep(struct timespec *ti)
& & pthread_mutex_
& & pthread_cond_
& & pthread_mutex_init(&mtx, 0);
& & pthread_cond_init(&cnd, 0);
& & pthread_mutex_lock(&mtx);
& & (void) pthread_cond_timedwait(&cnd, &mtx, ti);
& & pthread_mutex_unlock(&mtx);
& & pthread_cond_destroy(&cnd);
& & pthread_mutex_destroy(&mtx);
我们可以对这两个函数进行简单的封装,从而达到真正的sleep的作用。
本文为原创作品,请尊重作者的劳动成果。转载必须保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。http://jinsuo2007./blog/static//
&Qt4——程序延时的方法
http://blog.csdn.net/sunnyskyliu/article/details/6721277
void QTimer::singleShot ( int msec, QObject * receiver, const char* member ) [static] &
&#include&QApplication&
&#include&QTimer&
&int main(int argc, char *argv[])
& QApplication app(argc, argv);
& QTimer::singleShot(600000,&app, SLOT(quit()));
& return app.exec();
2:以毫秒计
& & QTimen=QTime::currentTime();
& & & & &qDebug()&&&jjmm&;
& & & & now=QTime::currentTime();
& & } & while(n.msecsTo(now)&=1);
QDateTime n2=QDateTime::currentDateTime();
& now=QDateTime::currentDateTime();
& } while(n2.secsTo(now)&=6);//6为需要延时的秒数
第二部分:
QT_让程序休息一会 sleep
在qt中不能直接使用sleep()函数,经查看可以发现,sleep在QThread中定义的有,但他是private模式,外部函数无法调用。利用一下方法可以实现sleep效果。我用的是第一种方法。
class SleeperThread : public QThread
&&&&static void msleep(unsigned long msecs)
&&&&&&&&QThread::msleep(msecs);
// 调用方法
SleeperThread::msleep(1000);
mutex.lock();
sleep.wait(&mutex, 1000);
mutex.unlock();
第三部分:
sleep()//秒
msleep()//毫秒
usleep()//微秒
以前为了模拟鼠标点击用过这些函数,可以让进程中断,今天发现我原来的做法其实不对.
这组函数会将你当前的线程/进程变为“睡眠”状态。 这个“睡眠”是深度意义的睡眠, 睡眠期间内核不会分配给程序时间片, 所以程序什么都不做, 更不用提界面的刷新了。 直接导致的问题就是用户无法与程序交互。 所以说直接使用sleep函数睡眠是常见的错误方案之一。
另外一种更常见的错误方法是使用QTimer+死循环。 类似下面的代码:
t.start();
while(t.elapsed() & 250);
这个简单粗暴的解决方案也是行不通的。 从代码中我们可以发现在while循环中不停的调用elapsed()函数, 等于在这段时间内CPU完全没有机会做别的什么事情。 特别是在Linux这样非抢占式的操作系统中, 这样的死循环造成的影响是致命的, CPU被完全占用, 内核都没有机会调度进程, 别的程序拿不到时间片执行, 系统基本上就是瘫痪状态了。 无论如何, 这种结果都不是我们想要的。(当然拉, 除非你想写的是病毒程序。) 对于我们的程序本身, 虽然它占用了所有的CPU, 但由于它陷入该循环, 程序没有机会进入到GUI事件循环,
导致同样界面是无法刷新的。
其实把上面的代码稍加改变就能得到一个很好的解决方案。 第一步, 解决界面无法刷新的问题。 调用QCoreApplication::processEvents(), 代码如下:
t.start();
while(t.elapsed() & 250)
QCoreApplication::processEvents();
第二步, 解决程序CPU占用率过高的问题 -- 让程序适当睡眠。
t.start();
while(t.elapsed() & 250)
QCoreApplication::processEvents();
usleep(10000);//sleep和usleep都已经obsolete,Linux下也可以使用nanosleep代替
以后要用,就可以直接用上面的代码了,用usleep()就可以了,那个nanosleep()则是Linux中的系统调用,它是使用定时器来实现的,该调用使调用进程睡眠,并往定时器队列上加入一个timer_list型定时器,time_list结构里包括唤醒时间以及唤醒后执行的函数,通过nanosleep()加入的定时器的执行函数仅仅完成唤醒当前进程的功能。系统通过一定的机制定时检查这些队列(比如通过系统调用陷入核心后,从核心返回用户态前,要检查当前进程的时间片是否已经耗尽,如果是则调用 schedule()函数重新调度,该函数中就会检查定时器队列,另外慢中断返回前也会做此检查),如果定时时间已超过,则执行定时器指定的函数唤醒调用进程。当然,由于系统时间片可能丢失,所以nanosleep()精度也不是很高。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:362844次
积分:5176
积分:5176
排名:第2832名
原创:123篇
转载:147篇
评论:71条
(1)(2)(2)(2)(1)(2)(1)(3)(3)(4)(2)(2)(4)(18)(3)(1)(14)(3)(8)(11)(1)(5)(7)(25)(2)(40)(22)(11)(14)(6)(6)(18)(20)(4)(2)爱自己,就如同呼吸和喝水一样,是很正常也很正确的一件事情。但是,你会如何爱自己呢?很多人会把自己打扮的漂漂亮亮的,也有人会积极锻炼,期待自己有健康的身体。而人有三分之一的时间在睡眠中度过,爱自己,似乎也应该照顾好自己的睡眠。
除了每天提醒自己早睡早起以外,还有什么办法才能知道自己的睡眠质量高低, 以及是否能够从睡眠当中发现身体上潜在的问题呢?
当技术已经储备好,相关的元器件价格在降低,从前主要在医院才能看见的睡眠检测仪,现在也开始向消费市场靠拢。
如果分析一下,会发现睡眠检测有几种方式。任天堂宣布要推出非接触式的睡眠检测设备,就是采用和欧姆龙 两年前面向日本市场发布的 HSL–101 一样的技术原理,用类似雷达的原理,发送无线电波扫描,然后记录人体位置的变化,从而通过算法挖掘人的睡眠情况。
另外则是压力传感,以压力传感器来记录人体的振动为方式,记录人体的呼吸频率、心跳频率、翻身频率等等,来监控人的睡眠过程,得出睡眠质量结论。在这方面,国内有 Sleepace 的 RestOn 以及被 Misift 投资的 beddit。
再有就是医院所使用的多导睡眠图监测(PSG)方法,通过记录人的脑电图、眼电图、肌电图,口鼻气流、血氧饱和度还有鼾声,从而对人的睡眠进行精确的测量。但这种监测方法的成本太高,显然不适合消费者市场。
Sleepace 的联合创始人黄锦锋还另外介绍,现在一些医院还采用心率变异(HSR)的睡眠检测方法,也就是通过心率的变化来监测人们的睡眠状况。
如果说要面向消费者市场,运用雷达的技术原理,以及通过压力传感器的方式进行睡眠监测,会是成本较低,但结果可以较为精确的一种方式。但压力传感器可以检测的数据可以更多,包括呼吸频率和心跳频率都可以测试,算法可挖掘的余地较多,综合参考数据得出的结论也较为精确。
有关于睡眠检测仪应该如何做?黄锦锋有一些经验分享。首先普及一下基础知识,压力传感类型的睡眠检测仪分压力带与设备主体两部分。一般用户会把压力带铺在床上,而设备主体则悬挂在床的一侧来使用。
因此在设计当中,需要考虑,首先不能让设备从床上掉落。床的类型有很多种,有的床垫内嵌在床架内,有的床垫直接铺在床架上。所以 RestOn 的设备主体和压力带之间,留出了一个过渡带,方便用户悬挂。另外,为了发挥压力传感器的性能,RestOn 的压力带上,不同传感器之间的间隔也是经过一次次实验和优化而得来,黄锦锋称公司已经成功申请了专利。
现在市面上关于睡眠检测的设备还不多,但 Sleepace 的联合创始人黄锦锋认为,如果说现在的智能家居产品还围绕着客厅,那么像 Sleepace 推出的 RestOn 睡眠检测仪,可以成为卧室的入口。因为睡眠检测仪直接能够获知人体的数据,而这些数据可以成为调节其它设备的依据。
编辑,专注创业报道,于不可能处发现可能。
关于睡眠监测这件事儿,你需要了解多少?
关注爱范儿微信号,连接热爱,关注这个时代最好的产品。
想让你的手机好用到哭?关注这个号就够了。
关注玩物志微信号,就是让你乱花钱。睡眠_与睡眠有关的【时尚资讯,图片】_VOGUE时尚网
您现在的位置: &&&&&&&&&
作者:时萍 摄影师/柏姗妮
1012人喜欢
《VOGUE服饰与美容》iPad杂志
订阅全年杂志优惠
24小时热门排行
作者:顾丽丝Photo:Getty Images 图片库 &&内容来源:&&
睡眠与护肤有着千丝万缕的关系,你知道吗?
作者:Mia.ZhouPhoto:VOGUE时尚网内容来源:&&
我们常说&睡个美容觉&,但是美容觉也不是那么好睡的,往往夜晚少眠,常惊醒都会困扰我们。如何营造一个最好的睡眠环境,让你的&美容觉&更健康?
作者:顾丽丝 编辑/luka.zhaoPhoto:Getty Images 图片库 &&内容来源:&&
在追求美的道路上女人们通常都乐于接收很多不同意见,不过这24条只要你能每天遵守,保证你就能一直美美哒。
作者:顾丽丝 编辑/luka.zhaoPhoto:Getty Images 图片库 &&内容来源:&&
做个美人不容易,且不说瓶瓶罐罐的齐备,还需要7-24时刻警惕,即使睡觉也不能放松。下面关于睡眠的八个错误做法将毁了你辛辛苦苦呵护的肌肤与头发,一定要尽早改正哦。
作者:MonicaPhoto:VOGUE时尚网内容来源:&&
你知道吗?全球人口中,每10人就有7人遭受睡眠困扰。生活压力、紧张情绪等时常会令人难以入眠,即使入睡,也处于浅睡眠之中,无法释放积压的疲劳及压力。能够享受一夜的好眠时光,舒缓身心,才是身体健康的关键所在...
作者:Mia.ZhouPhoto:Getty Images图片库内容来源:&&
夜间皮肤会处于极为干燥的状态,因此,夜间的补水工作,是一天中最为重要的环节。
作者:顾丽丝 编辑/luka.zhaoPhoto:Getty Images 图片库 &&内容来源:&&
少量补充褪黑激素能够缩短入睡时间,改善睡眠质量,减少睡眠中突醒次数。
作者:Matsushima / 编辑:Verance.ShenPhoto:Getty Image图片库内容来源:&&
制订了科学的运动计划并且已经严格执行了一段时间,但体重的下降趋势却并不明显?那你就应该从生活习惯和身体机能方面找些原因,因为体重和脂肪问题不单涉及到能量的收支,还和下面这6个很容易被忽视的因素有关系。
作者:luka.zhaoPhoto:Getty Images 图片库 &&内容来源:&&
深层且舒适的睡眠会让第二天的精神状态和皮肤状态都焕然一新,不过这样的高质量睡眠可不是天天都有的,所以我们不妨借助一些助眠小工具,让美容觉睡得更加香甜。
作者:Matsushima / 编辑:Verance.ShenPhoto:Getty Image图片库内容来源:&&
当我们在专柜试用保养品时,绝大多数人的第一个动作都是拧开瓶盖,然后用嗅觉给这款产品打第一印象分。的确,味道虽然不能代表和决定一切,但却在很大程度上左右了我们的购买欲。可你知道吗,现如今很多护肤品中的...
作者:luka.zhaoPhoto:&&内容来源:&&
一夜好眠之后会让肌肤都变得&精气神&十足,不过要注意的是,从睡眠、姿势到床上用品这些方方面面的细节都影响着你的美容觉质量,只要睡得一晚好觉,就能有一天好皮肤!
作者:moca.yaoPhoto:VOGUE时尚网内容来源:&&
睡眠专家怎么说
梦境专家凯利&苏列文(Kelly Sullivan)相信,外界的一切元素都可能进入梦境中,即使是房间的不良气味、睡前进食过多等都是诱发噩梦的原因。
作者:MAX 编辑/Cynthia HuangPhoto:Getty Images 图片库 &&内容来源:&&
在当今高科技世界,每个人都淹没在电话、邮件、微博、朋友圈之中,越来越多人失眠或睡眠质量下降。专家指出,应该至少提前两个小时远离那些电子产品,才能更好的入睡,否则大脑会持续高速运转,导致失眠。美容觉绝...
作者:Yoyo SunPhoto:Getty Images 图片库 &&内容来源:&&
入秋了天气却依然炎热,你是不是会在晚上辗转反侧,无法入眠,于是白天整个人睡眼惺忪、精神涣散、烦躁易怒&&不光如此,睡眠不足也在侵蚀着你的好皮肤。
作者:Yoyo SunPhoto:VOGUE时尚网内容来源:&&
8小时的睡眠,时间上足够了,可效果如何呢?如果你恰好正在经历下面列举的情况,就说明睡眠质量亟待提高,一起来学习一下,或许可以帮你找到改善现有局面的方法。
关注官方微信
集团网站:
更多VOGUE国际网站:
京ICP 证070504号 京网文[27号 京公网安备:有关/关于睡眠的文章散文日志,睡眠作文句子短语
你说: 我好难受,怎么办? 我想你了,怎么办? 我想你在我身边,怎么办? 怎么办先生,晚安。 在午夜的早晨,我终于丢失了睡眠。 听,天亮了。...
许多花儿开放了 许多水在沸腾 许多扇镶金的大门在敞开 冰点以下的三文鱼 在自由地悠游 淡淡的烟草香 远在天尽头 朦胧中 如行者足下如来的手指 那是一次失眠 月光小于睡眠 家具在哪儿靠岸 尼罗河畔的棕熊...
睡眠幸福的衡器 每个人都希望自己过得幸福,但怎样过才算幸福呢?不同的人答案各异,见仁见智。我们常把平淡的生活解释成枯躁乏味,真好像为赋新诗强说愁。一位老人常对我说:身在福中不知福。这就是说...
想你已是我的习惯 直到泪水模糊视线 想你已是我的习惯 想到忘记你的容颜 想你已是我的习惯 回忆快乐失笑哑然 想你已是我的习惯 蓦然自己对白出言 想你已是我的习惯 竟让整日忘记妆扮 想你已是我的习惯 ...
冬至将临,节气这个冷暖温度计,指示到了夜晚,就格外寒冷。丹江边,浅水处,已结上了一层薄薄的愁冰。 厚厚棉衣,依然难以包裹得住江边游人一颗颗颤动的心。亮化工程的江边,若不是留心留意留住脚步、...
我是一个幽灵 一个只能在夜晚出没的幽灵 一个没有生命的幽灵 我以夜风和猫头鹰的鸣叫为食 我以星月寒冷依稀的光为衣 住在树叶下面 夏日闷热和蚊虫欺扰 我沉默无奈 冬日寒气和刺目的雪 我承受无言 我是一...
饥来餐饭倦来眠,是人生在世最基本的需求,也是一种境界。然而许多人吃得越来越好,但却失去了高质量的睡眠。 一段时间以来,我的睡眠就出现了一点小问题。常常是早睡早醒,晚睡也早醒,半夜中只要一觉...
这个场景,小时候有,四年前还是有的,可是,如今只能在记忆中怀想了。犹记得那棵山梨树,犹记得那面黄土墙,犹记得那张小竹椅,外婆的身影就参差其中。冬季的阳光厚实,暖和,老人们都喜欢出来鹛簦...
睡眠相关文章
CopyRight & 2010
All Rights Reserved.}

我要回帖

更多关于 休眠和睡眠的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信