C语言delay能延时几分钟用吗

C语言delay能延时几分钟用吗,第1张

可以啊

虽然有的平台,限制了delay的最大值

但你可以循环用啊。

比如

delay单位是毫秒亏脊的。 可以写这样的

void delay_second(int seconds)

{

    int i

    for(i = 0 i < seconds i ++)

        delay(1000)

}

照这个思路,还可以delay分简闹钟,delay小时,delay若干天。。。

当然 随着越来越久,误差会有一些

不过影响不大。

延时10秒钟,实际延时10.01秒 一样没事的。

延时10分钟,多延时两拦空罩三秒也不会成为问题的。

首先就是机器的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并不是实时 *** 作系统,因此对于太过精确的计时,还是无能为力的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12359700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存