C++中的延时函数

1.推荐用Sleep();

MS VC++可以用MFC的Sleep函数,参数是毫秒。

包含在头文件<windows.h>里

/*#include<iostream>
#include<windows.h>
using namespace std;

void main()
{

Sleep(1000); //延时1秒
cout<<"adsd"<<endl;
Sleep(10000); // 注意S大写
cout<<"123"<<endl;

}   */

2.delay();

delay函数要自己写,编译器里没有。

#include <time.h>
void delay(int sec)
{
time_t start_time, cur_time; // 变量声明
time(&start_time);
do { time(&cur_time);
} while((cur_time - start_time) < sec );
}

然后就可以直接调用了

如:

#include<iostream.h>
#include <time.h>
void delay(int sec)
{
time_t start_time, cur_time; // 变量声明
time(&start_time);

do {
time(&cur_time);
} while((cur_time - start_time) < sec );
}

void main()
{
cout<<"a"<<endl;
delay(5); // 滞后5秒
cout<<"b"<<endl;
}

短于一秒的delay可以这样写:

clock_t start_time, cur_time;
start_time = clock();
while((clock() - start_time) < 3.0 * CLOCKS_PER_SEC)
{
}

但有的编译器不支持clock

时间: 2024-11-10 08:36:59

C++中的延时函数的相关文章

VC函数中的延时操作

说到程序中的延时,你会想到怎么做,新开一个线程?如果我的程序只用单线程,却又想让函数等上10秒才返回值,而且还不能像使用Sleep函数那样不能处理其它消息呢? 我在这里把论坛里能见到的几种延时方式总结一下.另外,主要是学习的别人的sources,版权不在我,如果本文对大家有用,请分别感谢文中的这些作者(CSDN上的ID):laiyiling(最熟悉的陌生人).QunKangLi(雾痕).tyzyx(炸平日本岛). 从陌生人的处理方式说起,这是延时中时间跨度最大的,单位至少在秒以上: http:/

指针-ucos中当调用延时函数时会释放cpu使用权,当延时时间到了以后又会夺取cpu使用权吗

问题描述 ucos中当调用延时函数时会释放cpu使用权,当延时时间到了以后又会夺取cpu使用权吗 当延时时间到了以后,这个延时的函数的优先级一定是最高的吗,这个是怎么保证的, ucos中好多次参数都是指针,或者指针的指针,变量或函数的数据类型也是很XX(不知道怎么形容,感觉不那么显眼一下子就能看懂,而是要一层一层的跟踪进去),

中断中处理延时及一些函数的调用规则(中断调i2c驱动有感)--中断中的延迟delay与printk函数的冲突【转】

转自:http://blog.csdn.net/psvoldemort/article/details/8222371 1,中断处理程序中不能使用有睡眠功能的函数,如ioremap,kmalloc,msleep等,理由是中断程序并不是进程,没有进程的概念,因此就没有休眠的概念: 2,中断处理程序中的延时可以用忙等待函数来代替,如ndelay,udelay,mdelay等,这些函数在实现上本质是根据CPU频率进行一定次数的循环:最好不要使用mdelay,因为毫秒延时对内核来说已经是非常大了.但是在

单片机 延时函数-延时函数时间计算问题

问题描述 延时函数时间计算问题 void delay_n_ms(uchar num) { uchar time; while(num) { time = 250; // fosc = 11.0592MHz CLK_DIV = 0; while(time) time --; num --; } } 这个函数的周期是1ms吗?为什么?求大神详解! 解决方案 你用这种循环是得不到精确的延时时间的,要想得到精确的1ms还的配置定时器来定时. 另外,你的这个函数周期是不是1ms我没有算,但是这是和你单片机

简析LIVE555中的延时队列

最近在看LIVE555的源码,对其中的延时队列感觉有点乱,网上查询资料,于是就总结一下. 首先描述一下LIVE555中的延时队列的设计理念.如下图,A,B,C分别为时间轴上的三个事件点,而head表示当前时间点. 要描述一个事件发生的时间,通常可以有两种方法:一种方法直接描述事件发生的绝对时间:另一种方法则是可以描述和另一事件发生的相对时间.而LIVE555中采用的就是后者.   在LIVE555中,首先将所有的事件点以发生时间的先后进行排序,然后每个事件对应的时间都是相对于前一事件发生的时间差

5-3 Linux内核计时、延时函数与内核定时器【转】

转自:http://www.xuebuyuan.com/510594.html 5-3 Linux内核计时.延时函数与内核定时器  计时 1. 内核时钟 1.1   内核通过定时器(timer)中断来跟踪时间流 1.2   硬件定时器以周期性的间隔产生时间中断,这个间隔(即频率)由内核根据HZ来确定,HZ是一个与体系结构无关的常数. 1.3   这个时间间隔通常取1ms到10ms. 2. jiffies计算器 2.1每次当定时器中断发生时,内核内部通过一个64位的变量jiffies_64做加一计

内核延时函数【转】

转自:http://www.mamicode.com/info-detail-514261.html 1) msleep:实现毫秒级的延时,该延时保证至少延时所设置的延时时间,不会提前超时返回,会让出CPU void msleep(unsigned int msecs) { unsigned long timeout = msecs_to_jiffies(msecs) + 1; while (timeout) timeout = schedule_timeout_uninterruptible(

c++问题-C++的类中怎么在一个函数中引用上一层的函数

问题描述 C++的类中怎么在一个函数中引用上一层的函数 在同一个类中怎么引用先定义的函数来定义函数?比如在一个时期类的定义中,一个日期加1的函数中怎么调用先定义的一个求是否闰年的函数. 解决方案 C++定义隐式转换函数将类转换为内部的一个成员变量c++函数默认参数是一个好的设计吗? 解决方案二: 直接在函数内调用就可以了.不知道你说的上一层是什么意思.是基类的函数还是集合类所属的对象的函数,前者直接调用,或者用 基类类名::函数名后者用构造函数传对象指针 解决方案三: 同一个类中的函数都是通过t

constraint-在check中使用case函数,为什么end后面要加 =1

问题描述 在check中使用case函数,为什么end后面要加 =1 alter table Salaryadd CONSTRAINT check__salary CHECK( CASE WHEN sex = '2' THEN CASE WHEN salary > 1000 THEN 1 ELSE 0 END ELSE 1 END =1 )_**_** 为什么上面语句最后结束的时候(end 后面)要加上 "=1",否则会提示下面的错误信息:An expression of non