定时函数的应用综述.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
定时函数的应用综述

定时函数的应用综述 当我们在衡量一个函数的运行时间,或者是判断一个算法的时间效率,或者在程序中我们需要一个定时器来定时执行一个特定的操作,如闹铃、时钟、多媒体、游戏动画等,都要用到时间函数。编译器和时间函数为我们提供了很多时间函数,而这些函数的精度和用法也是各不相同的。下面我们就对几种常见的定时函数进行比较、详述: Sleep函数 用法 精度 原理及说明 备注 VOID Sleep( DWORD dwMilliseconds // 休眠的毫秒数 ); 其精度很低,系统越忙,精度越低,其精度取决于当前线程及其他线程的优先级以及线程数量等因素 Sleep 函数是使调用Sleep函数的线程休眠,线程主动放弃时间片。当经过指定的时间间隔后,再启动线程,继续执行代码。Sleep函数并不能起到定时的作用,主要作用是延时。在一些多线程中可能会看到Sleep(0);其主要目的是让出时间片。 Sleep(1000);//休眠一秒钟 当你要创建一个窗口是使用这个函数必须要小心。因为当一个进程创建一个窗口时,它必须处理消息,而消息广播被发送到系统所有的窗口中,这时你如果在一个线程中使用了Sleep函数来无限延迟,可能会导致系统死锁。所以在此时你可以应用函数MsgWaitForMultipleObjects 或MsgWaitForMultipleObjectsEx来代替Sleep(MSDN) MFC中的timer事件 用法 精度 原理及说明 备注 先使用SetTimer()来定时 再在程序中增加定时响应函数OnTimer()并在此函数中增加相应的处理语句完成时间到时的操作 精度在毫秒级别,一般其响应时间为55ms,且系统越忙精度越差。 原理与Sleep一样,不同的是timer是一个定时器,可以指定回调函数,默认为OnTimer(). 常用于做电子时钟或者在游戏动画中使用它。 C中的Time应用 用法 精度 原理及说明 备注 time_t t; time(t); Time函数是获取当前时间 秒级别 用于获取当前时间 比如我们做一个电子时钟,就可以用它来获取系统当前时间 COM中的COledateTime,COleDateTimeSpan类的使用 用法 精度 原理及说明 备注 COleDateTime start_time= COleDateTime::GetCurrentTime(); COleDateTimeSpan end_time= COleDateTime::GetCurrentTime()-start_time; While(end_time.GetTotalSeconds() 2) { // 处理延时或定时期间能处理其他的消息 DoSomething() end_time = COleDateTime::GetCurrentTime-start_time; } 秒级别 以上代表延时2秒,而这两秒内我们可以循环调用DoSomething(),从而实现在延时的时候我们也能够处理其他的函数,或者消息。 COleDateTime,COleDateTimeSpan是MFC中CTime,CTimeSpan在COM中的应用,所以,上面的方法对于CTime,CTimeSpa同样有效。 C语言中的时钟周期clock的使用 用法 精度 原理及说明 备注 clock_t start = clock(); Sleep(100); clock_t end = clock(); double d = (double)(start - end) / CLOCKS_PER_SEC; ms级别,对于短时间内的定时或者延时可以达到ms级别,对于时间比较长的定时或者延迟精度还是不够。 原理:clock()是获取计算机启动后的时间间隔。 在windows下CLOCKS_PER_SEC为1000。 Windows下的GetTickCount的使用 用法 精度 原理及说明 备注 DWORD start = GetTickCount(); Sleep(100); DWORD end = GetTickCount(); 其时间精度要比clock高, Windows NT 3.5 以后 10ms. Windows NT 3.1 16ms. Windows 95 and later 55ms GetTickCount()是获取系统启动后的时间间隔。通过进入函数开始定时,到退出函数结束定时,从而可以判断出函数的执行时间,这种时间也并非是函数或者算法的真实执行时间,因为在函数和算法线程不可能一直占用CPU,对于所有判断执行时间的函数都是一样,不过基本上已经很准确,可以

文档评论(0)

liudao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档