社区
C语言
帖子详情
for 循环延时 与 sleep延时 区别
ylsl917
2007-12-18 11:52:46
请问 我执行一个空的for循环 比如
for(long j=0;j<10000;j++)
{
}
与 sleep() 有什么区别
...全文
1215
7
打赏
收藏
for 循环延时 与 sleep延时 区别
请问 我执行一个空的for循环 比如 for(long j=0;j<10000;j++) { } 与 sleep() 有什么区别
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
luckqt
2007-12-18
打赏
举报
回复
C 语言中for循环用于延时(网上找来的)
for(i=delay;i>0;i--);
下面来举例几个延时函数:
一. 500ms延时子程序
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
产生的汇编代码:
C:0x0800 7F0F MOV R7,#0x0F
C:0x0802 7ECA MOV R6,#0xCA
C:0x0804 7D51 MOV R5,#0x51
C:0x0806 DDFE DJNZ R5,C:0806
C:0x0808 DEFA DJNZ R6,C:0804
C:0x080A DFF6 DJNZ R7,C:0802
C:0x080C 22 RET
计算分析:
程序共有三层循环
一层循环n:R5*2 = 81*2 = 162us DJNZ 2us
二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值 1us = 3us
三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值 1us = 3us
循环外: 5us 子程序调用 2us + 子程序返回 2us + R7赋值 1us = 5us
延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms
计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5
mymtom
2007-12-18
打赏
举报
回复
for 循环会占用CPU, sleep不会。
飞哥
2007-12-18
打赏
举报
回复
for循环? 这也太恐怖了吧
luckqt
2007-12-18
打赏
举报
回复
提供一个连接
VC中基于 Windows 的精确定时
http://www.vckbase.com/document/viewdoc/?id=1301
VC中使用sleep()函数实现延时,它的单位是ms,如延时2秒,用sleep(2000)。精度非常低,最小计时精度仅为30ms,用sleep函数的不利处在于延时期间不能处理其他的消息,如果时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。
Treazy
2007-12-18
打赏
举报
回复
void sleep(unsigned seconds)
sleep是让程序停止运行second秒
但是for是循环,程序本身还是在运行
另外for的执行周期是要根据pc的机器周期来决定的
所以在做延时的时候,上面2个方法都不是最佳的(我指精确定时)
一般常用的方法是用定时器!
当然在精度不高的情况下,使用软件模拟定时也是可行的!
NKLoveRene
2007-12-18
打赏
举报
回复
这要是破机器,for一下就down了。。。
skywarship
2007-12-18
打赏
举报
回复
多任务系统中程序通过调用sleep主动交出系统分配的时间片,于是这些时间片可以被用于其他程序的执行,当经过了调用sleep时指定的时间时系统唤醒程序,使之得以继续运行(窃以为并不是立即开始运行,只是可以继续运行)。
用for循环延时时,由于程序仍在运行中,并未交出时间片资源,在多任务系统中可以说是浪费了处理器资源。
单任务系统中由于运行中的程序总是独占全部处理器资源,所以for循环延时和用sleep的方式没有实质性区别。
无限
循环
遇到
sleep
在cmd窗口实现简单的动画,今天翻文档时发现了几个原来学java时几个有意思的小程序,拿出来跟大家分享一下,其实我想设置一分,但最少要设置两分
delphi
延时
函数(相当于
sleep
函数)
delphi
延时
函数(相当于
sleep
函数),比
sleep
函数好,不会使界面停顿,像死机那样
VB优于
Sleep
的
延时
函数,不长CPU哈(完美
延时
)
VB优于
Sleep
的
延时
函数,不长CPU哈(完美
延时
)
vc实现时间
延时
延时
时间 包括 秒 毫秒 微秒
用
Sleep
函数
延时
,如何时间太长,程序就像无响应一样,采用消息泵可以解决这个问题
延时
时间 包括 秒 毫秒 微秒
延时
Sleep
,timeGetTime完美结合占CUP少不假死源码
延时
Sleep
,timeGetTime完美结合占CUP少不假死源码
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章