c语言的sound函数和delay函数的问题 delay函数

函数:void delay(uint i){while(i)i--;}这样的延迟设计很不好,因为受影响的因素太多。首先就是机器的CPU频率,快的CPU执行i--这句的机器时间短,慢的机器就很慢。其次是当前机器的负荷情况,负荷较重时,系统给当前进程分配的CPU时间少,执行这些语句的机会就少,延迟就增加了。影响因素还有很多在此不再列举。做延迟程序主要有以下几种方法:1. 定时器法用CWnd::SetTimer()函数设置定时器,当定时时间到时发送WM_TIMER消息触发CWnd::OnTimer()函数,重载它把自己的代码放进去。SetTimer()参数为毫秒,此方法定时不高,受系统负荷影响。2. 休眠法调用系统API函数Sleep(2000); 参数单位是毫秒,2000代表2秒。此方法主要收到当前系统负荷的影响,定时不太准确3. 时刻比较法定义两个CTime变量,一个用于记录起始时刻,另一个放在循环体中不断刷新当前时刻,并减去起始时刻,自己计算是否到时间了。此方法因CTime变量只能获取秒级的时刻,且收到系统负荷影响,精度也较低。4. CPU滴答查询法利用两个API函数QueryPerformanceFrequency()和QueryPerformanceCounter()分别获取CPU的频率和CPU滴答数,依时刻比较法自己计算时刻差值。因为CPU滴答数是等于CPU的机器周期的,所以是Windows系统里最最精确的计时方法了。现在的CPU主频都是GHz级的,因此理论上计时精度可以到纳秒。只要系统负荷不太重,此法可用于极其精确的延时程序。因为Windows并不是实时操作系统,因此对于太过精确的计时,还是无能为力的。

c语言的sound函数和delay函数的问题 delay函数

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/144038.html

更多阅读

删除文件函数和文件更名函数 c语言删除文件函数

1. 删除文件函数(remove())使用函数remove(char *filename);可删除文件filename,filename可以带路径名。函数执行成功,返回0值;否则,返回-1,且错误标志errno取下列两个值之一:ENOENT(表示文件不存在)或EACCES(表示拒绝存取)。例10.15

线程池技术个人理解以及c语言的简单实现 线程池实现原理

转载:http://blog.csdn.net/mxgsgtc/article/details/11694901这几天闲来无事,网上无意中看到了关于线程池的东西,发现挺有意思的,找了挺多资料,研究一下,线程池技术,个人理解,线程池是个集合(概念上的,当然是线程的集合),假设这个集合中有3个

C语言最重要的知识点复习资料

总体上必须清楚的:1)程序结构是三种:顺序结构、选择结构(分支结构)、循环结构。2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。3)计算机的数据在电脑中保存是以二进制

单片机C语言教程二 转载 单片机c语言视频教程

第二课 初步认识51芯片上一课我们的第一个项目完成了,可能有懂C语言的朋友会说,"这和PC机上的C语言没有多大的区别呀"。的确没有太大的区别,C语言只是一种程序语言的统称,针对不同的处理器相关的C语言都会有一些细节的改变。编写

声明:《c语言的sound函数和delay函数的问题 delay函数》为网友夏不煽情分享!如侵犯到您的合法权益请联系我们删除