for 循环延时 与 sleep延时 区别

分类: 365bet亚洲版 时间: 2025-08-05 02:15:41 作者: admin 观测: 346
for 循环延时 与 sleep延时 区别

社区

C语言 帖子详情 for 循环延时 与 sleep延时 区别 ylsl917 2007-12-18 11:52:46 请问 我执行一个空的for循环 比如

for(long j=0;j<10000;j++)

{

}

与 sleep() 有什么区别

...全文

1218 7 打赏 收藏 for 循环延时 与 sleep延时 区别 请问 我执行一个空的for循环 比如 for(long j=0;j<10000;j++) { } 与 sleep() 有什么区别 复制链接

扫一扫 分享 转发到动态 举报 AI 作业

写回复 配置赞助广告取 消

确 定

用AI写文章 7 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 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 标题中的“无限循环遇到sleep”指的是在编程中使用无限循环(通常用`while true`或`for`循环无条件迭代)结合`sleep`函数来创建某种动态效果,比如动画。在CMD窗口中实现简单的动画是一种常见的实践,它利用了控制台... delphi延时函数(相当于sleep函数) 传统的Windows API函数`Sleep()`常用于此目的,但使用`Sleep()`会阻塞应用程序的消息循环,导致界面无响应,给人一种“死机”的感觉。为了克服这个问题,Delphi提供了其他延时函数,如`TThread.Sleep()`和异步回调等... VB优于Sleep的延时函数,不长CPU哈(完美延时) 标题提到的"优于Sleep的延时函数"是指在VB中使用Sleep函数之外的其他方法实现延时,以避免过度消耗CPU资源。Sleep函数是Windows API中的一个函数,它会挂起当前线程的执行,直到指定的毫秒数过去或者收到特定的事件... vc实现时间延时 延时时间 包括 秒 毫秒 微秒 标题和描述中提到的“vc实现时间延时”主要涉及到两种常见的方法:使用`Sleep`函数和采用消息泵机制。这两种方法在不同的场景下各有优缺点,下面将详细介绍这两种方法以及它们如何处理不同时间单位的延时。 1. `... 延时Sleep,timeGetTime完美结合占CUP少不假死源码 本文将深入探讨“延时Sleep,timeGetTime完美结合占CPU少不假死”的概念,并通过源码解析来理解其背后的实现原理。 首先,我们要了解两个关键的函数:Sleep和timeGetTime。`Sleep`函数是Windows API中用于让当前...

C语言

70,022

社区成员

243,260

社区内容

发帖 与我相关 我的任务 C语言 C语言相关问题讨论 复制链接

扫一扫 分享 确定 社区描述 C语言相关问题讨论 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

暂无公告 试试用AI创作助手写篇文章吧

+ 用AI写文章

← 怎么设置手机别人打不进来 “竽”和“笙” | 民族乐器小百科 →

相关时空节点

昌剑名字的寓意

昌剑名字的寓意

07-23 💫 556
去腿毛的办法

去腿毛的办法

07-10 💫 963
注册公司后缀名有哪些?(最全详细整理)

注册公司后缀名有哪些?(最全详细整理)

07-26 💫 65