gettoget some sleepp用法有什么需要注意的地方

23645人阅读
VC中的Sleep函数在延时应用中很好用,比如通信程序中,一方需等待另一方若干个毫秒后再处理,或者在死循环中,让出CPU不至于资源占用100%等等;
但是,在界面操作中不要使用Sleep函数,比如按钮事件中,不要调用这个函数,否则会出现意外的情况!!那么如何处理延时一段时间执行呢?使用定时器,将按钮事件中调用Sleep函数中的地方,改为启动一个一段时间执行后的定时器:SetTimer(定时器编号,毫秒数后执行,NULL);执行的动作放到定时器回调函数中执行,如果仅执行一次的,那么进到回调函数后首先将定时器关闭(即不是周期执行);
这样做的好处是,所有的“操作”(处理),都是在“本类”中。
另一个方案是启动一个线程:AfxBeginThread(处理回调函数,传递给回调函数的参数);但是也不建议使用!!因为,一般使用该函数都是这样使用,调用时:
AfxBeginThread(Fn, this);&span style=&white-space:pre&& &/span&//this是“目前正在处理这个类”的指针
而在回调函数Fn中一般:
UINT Fn( LPVOID pParam )
CMyDlg *pDlg = (CMyDlg *)pP//切换到“正在处理”的类中
//其他处理
return 1L;
这涉及到RTTI,微软MFC在这方面做得不是太好(我在使用codeproject上的一些派生类控件就遇到了几个不解的问题,不知道是微软MFC的问题,还是那些派生类控件的问题),保守一点,使用定时器,可以避免这方面的弯路!
2. Sleep()的精度是可以保证的,如Sleep(4),能保证延时4个毫秒,但是不能用GetTickCOunt()函数来探测(最小精度15毫秒,不信自己验证),而是需使用:
#include &windows.h&
#include &stdio.h&
#pragma comment(lib, &Winmm.lib&)
void main()
timeBeginPeriod(1);
Sleep(100);
//探测10次Sleep的延时
for(int i=0; i&10; i++)
DWORD s = timeGetTime();//开始时间(毫秒级)
//延时函数
//for (j=0; j&; j++);//测算34~40毫秒,所以for循环每条指令为3~4个ns
DWORD e = timeGetTime();//结束时间(毫秒级)
printf(&%d\n&, e-s);//
小心,在一个复杂的工程中,使用windows多媒体库,有可能对原有系统的功能造成不稳定,如CPU占用率过高、破坏原有的定时频率等!!
编辑:在intel的x86上,还是采用“查询机器的工作频率”方式更好用:
#include &windows.h&
#include &stdio.h&
void main()
LARGE_INTEGER
LARGE_INTEGER c1, c2,
//查询该机器本身的工作频率,并检查是否支持
BOOL b = QueryPerformanceFrequency(&freq);
printf(&频率 = %I64d\n&, freq.QuadPart);
printf(&QueryPerformanceFrequency 失败\n&);
//查询该机器本身的工作频率,并检查是否支持
b = QueryPerformanceCounter(&c1);
printf(&QueryPerformanceCounter 失败\n&);
//下面检验Sleep(1)的精度
for (i=0; i&10; i++)
QueryPerformanceCounter(&c1);
c.QuadPart = c1.QuadPart - c2.QuadP
printf(&%I64d, %.5fs\n&,
c.QuadPart,
//计数器差
c.QuadPart/(double)freq.QuadPart //周期值,单位:秒
getchar();
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:886020次
积分:10702
积分:10702
排名:第1478名
原创:279篇
转载:34篇
评论:106条
(2)(2)(1)(2)(1)(5)(1)(8)(21)(2)(2)(4)(1)(1)(2)(6)(1)(6)(7)(1)(6)(2)(9)(2)(4)(1)(3)(4)(1)(2)(11)(8)(5)(18)(2)(1)(7)(1)(3)(9)(11)(8)(13)(5)(1)(8)(2)(5)(17)(4)(6)(1)(1)(5)(6)(2)(3)(1)(8)(5)(5)(2)(3)(12)(4)(1)扫二维码下载作业帮
2亿+学生的选择
下载作业帮安装包
扫二维码下载作业帮
2亿+学生的选择
关于英语睡觉go to bed,go to sleep,fall asleep,get to sleep用法go to bed,go to sleep,fall asleep,get to sleep用法有什么需要注意的地方呢?
扫二维码下载作业帮
2亿+学生的选择
它们都与“睡”有关,但侧重点有所不同. sleep强调“睡觉”这一动作,是延续性动词,可与表示时间段的状语连用.如: He slept for eight hours.他睡了八个小时. Did you sleep well last night?昨晚你睡得好吗? go /get to sleep指“睡着、入睡”.go to sleep强调“入睡”这个动作,即begin to sleep;而get to sleep强调进入睡眠状态,且多用于否定句、疑问句或条件句中.如: He was so tired that he went to sleep soon.他很累,不久就睡着了. I was waiting for the sound of the other shoe!I can't get to sleep.我在等另一只鞋落地声!我睡不着. fall asleep与go /get to sleep同义,可互换使用,但fall asleep侧重“无意识地入睡、不想入睡而入睡”的含义.如: He was just falling asleep when there was a loud knock at the door.他刚睡着,就有人使劲敲门. I don't know when I went to sleep /got to sleep /fell asleep last night.我不知道昨晚什么时候睡着的. be asleep表示“睡着”的状态,是系表结构,其中asleep不能用 very修饰,只能用sound,fast等词修饰.如: The baby is fast asleep.孩子睡得很香. go to bed意为“就寝、上床睡觉”,着重指上床准备睡觉的动作.一般说来,是go to bed在前,然后才go /get to sleep或fall asleep.如: He usually goes to bed at ten o'clock and goes to sleep /falls asleep five minutes afterwards.他通常十点钟就寝,五分种后入睡.
为您推荐:
其他类似问题
扫描下载二维码Get To Sleep - Takitani - 网易云音乐
Get To Sleep
所属专辑:
网易云音乐多端下载
同步歌单,随时畅听320k好音乐
网易公司版权所有(C)杭州乐读科技有限公司运营:Get to sleep Tsunade
Following a pleasant dinner, Naruto sprang in Tsunade’s space to say a fast thanks prior to heading to their bed. Not to mention this individual couldn’t resist in order to fuck hard their dead sleeping auntie once more: -)
More Free Demo Games
Added: July 7, 2017
Added: June 26, 2017
Added: July 5, 2017
Added: July 25, 2017
Added: July 14, 2017
Added: June 25, 2017
new games on
Welcome to official site【英语】I was too excited _last night.A,got to sleep Bfell asleep Cto go to school D,to get to sleep,选择-学路网-学习路上 有我相伴-提供健康,养生,留学,移民,创业,汽车等信息
I was too excited _last night.A,got to sleep Bfell asleep Cto go to school D,to get to sleep,选择
来源:互联网 &责任编辑:李志 &时间: 1:15:12
这是用户提出的一个英语问题,具体问题为:I was too excited _last night.A,got to sleep Bfell asleep Cto go to school D,to get to sleep,选择我们通过互联网以及本网用户共同努力为此问题提供了相关答案,以便碰到此类问题的同学参考学习,请注意,我们不能保证答案的准确性,仅供参考,具体如下:用户都认为优质的答案:答案选D,to get to sleeptoo.to.太.以致不能.昨晚我太兴奋了,以致不能入睡.======以下答案可供参考======供参考答案1:d too...to 太。。。以至于不能。。。供参考答案2:d供参考答案3:D,to get to sleep 入睡too....to....太....以致不能.... 昨晚我太兴奋了,以致不能入睡
相关信息:}

我要回帖

更多关于 get some sleep 的文章

更多推荐

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

点击添加站长微信