另外值得一提的是,linux下还有个delay()函数,原型为extern void delay(unsigned int msec);它可以延时msec*4毫秒,也就是如果想延时一秒钟的话,可以这么用 delay(250);

在VC中使用带上头文件

#include

注意:

在VC中Sleep中的第一个英文字符为大写的"S"

在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.

Sleep函数的一般形式:

Sleep(unisgned long);

其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000);

例:

#include

int main()

{

int a;

a=1000;

Sleep(a);/* VC 使用Sleep*/

return 0;

}

usleep功能:

暂停执行。 语法: void usleep(int micro_seconds); 返回值: 无 函数种类: PHP 系统功能 内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的毫秒数(微妙还是毫秒?)。 注意:这个函数不能工作在 Windows 操作系统中。参见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。

只是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。

且,此函数已被废除,可使用nanosleep。

如果延迟时间为几十毫秒,或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间

delay:

函数名: delay

功 能: 将程序的执行暂停一段时间(毫秒)

用 法: void delay(unsigned milliseconds);

程序例:

/* Emits a 440-Hz tone for 500 milliseconds */

#include

int main(void)

{

sound(440);

delay(500);

nosound();

return 0;

}

(由于delay读音像地雷,在各大OI灌水区通用……)

delay()是循环等待,该进程还在运行,占用处理器。

sleep()不同,它会被挂起,把处理器让给其他的进程。

sleep()参数指定暂停时间,单位是s

delay()参数指定暂停时间,单位是ms

nanosleep() & sleep()     用户程序中的睡眠:

sleep()

sleep()和nanosleep()都是使进程睡眠一段时间后被唤醒,但是二者的实现完全不同。

Linux中并没有提供系统调用sleep(),sleep()是在库函数中实现的,它是通过调用alarm()来设定报警时间,调用sigsuspend()将进程挂起在信号SIGALARM上,sleep()只能精确到秒级上。

nanosleep()则是Linux中的系统调用,它是使用定时器来实现的,该调用使调用进程睡眠,并往定时器队列上加入一个

timer_list型定时器,time_list结构里包括唤醒时间以及唤醒后执行的函数,通过nanosleep()加入的定时器的执行函数仅仅完成唤醒当前进程的功能。系统通过一定的机制定时检查这些队列(比如通过系统调用陷入核心后,从核心返回用户态前,要检查当前进程的时间片是否已经耗尽,如果是则调用schedule()函数重新调度,该函数中就会检查定时器队列,另外慢中断返回前也会做此检查),如果定时时间已超过,则执行定时器指定的函数唤醒调用进程。当然,由于系统时间片可能丢失,所以nanosleep()精度也不是很高。     alarm()也是通过定时器实现的,但是其精度只精确到秒级,另外,它设置的定时器执行函数是在指定时间向当前进程发送SIGALRM信号。

linux delay和sleep,Linux sleep usleep and delay相关推荐

  1. Linux下的微秒级定时器: usleep, nanosleep, select, pselect

    Linux下的微秒级定时器: usleep, nanosleep, select, pselect 标签: linuxnulldelaystructdate 2012-02-07 23:29 4979 ...

  2. linux 如何延迟100ms,Linux延时函数

    每一个平台不太一样,最好自己定义一套跨平台的宏进行控制. DOS: sleep(1); //停留1秒 delay(100); //停留100毫秒 Windows: Sleep(100); //停留10 ...

  3. linux I2C驱动(Linux驱动开发篇)

    1.linux IIC驱动 由于裸机的驱动迎合驱动的分离和分层的思想,分为IIC主机驱动(接口驱动)和IIC设备驱动. 这种思想的好处,请看我写的另外一篇文章Linux驱动的分离和分层. 其中上面说的 ...

  4. linux c编程项目实例,Linux c编程实例_例子

    例一:字符与整型变量的实现 #include int main() { int c1,c2; char c3; c1='a'-'A'; c2='b'-'B'; c3='c'-; printf(&quo ...

  5. linux内核网络协议栈--linux bridge(十九)

    1 . 前言 本文是参考附录上的资料整理而成,以帮助读者更好的理解kernel中brdige 模块代码. 2. 网桥的原理 2.1 桥接的概念 简单来说,桥接就是把一台机器上的若干个网络接口" ...

  6. linux nmon 进程io,linux监控占用磁盘IO进程的工具

    介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. 一.iotop详解 iotop 是一个用来监视磁 ...

  7. Linux内核:了解Linux内核抢占

    目录 无强制抢占 可抢占内核 自愿内核抢占 完全实时抢占 在配置Linux内核时,我们可以设置一些影响系统行为的参数.您可以使用不同的优先级,调度类和抢占模型.了解并选择正确的参数非常重要. 在这篇文 ...

  8. linux ppp拨号 USB,linux下ppp拨号上网

    转帖 如何用 Linux 拨号上网 一.Linux 上的 PPP Linux 中已经包括了点对点协议PPP,其主体是 pppd ,如果你已经使用过 Windows95 或 NT 的拨号网络,那么你已经 ...

  9. platform框架--Linux MISC杂项框架--Linux INPUT子系统框架--串行集成电路总线I2C设备驱动框架--串行外设接口SPI 设备驱动框架---通用异步收发器UART驱动框架

    platform框架 input. pinctrl. gpio 子系统都是 Linux 内核针对某一类设备而创建的框架, input子系统是管理输入的子系统 pinctrl 子系统重点是设置 PIN( ...

最新文章

  1. 姜宁谈红帽绩效考核:不关心员工具体做什么
  2. Ubuntu安装Nginx+PHP+Memcache+Mysql指导手册
  3. iOS面试题 第一天
  4. nginx 日志配置log_format用法
  5. zipimport.ZipImportError: can't decompress data; zlib not available
  6. SAP 供应商寄售业务的标准流程
  7. 三十五、深入Python的引用计数
  8. C和指针之函数之可变参数
  9. java观察者模式学习
  10. OpenAI公布强化学习新算法,可控制复杂机器人
  11. 最近工作上的两个问题的调查报告
  12. 计算机学数字电子基础知识,什么是数字电路?数字电路基础知识
  13. 联想拯救者y7000电池耗电快_联想拯救者Y7000P使用一周体验
  14. slack 聊天机器人_无法筹集资金的Slack机器人
  15. 单元测试的目的及使用
  16. 获取深户股市列表api_获取股票api
  17. 脑科学和类脑智能技术综述学习笔记
  18. 使用百度云AI C++SDK在windows上进行在线语音识别
  19. 基于JavaSwing+Mysql的超市商品管理系统设计和实现
  20. Web端实现视频通话

热门文章

  1. java高校后勤报修系统
  2. springboot vue uniapp校园报修系统源码
  3. 嵌入式以太网第一部分——ENC28J60网卡驱动
  4. 软考信息系统监理师:2016年4月1日作业
  5. vscode双击选择连字符
  6. 《2040大预言:高科技引擎与社会新秩序》——2.10 社会的极化
  7. android 环绕音效,DTS环绕声 多级音效增强
  8. 非抢占模式下故障后优先级降低却不切换问题--使用Keepalived实现非抢占模式主备切换
  9. python远程连接mysql数据库_python远程连接MySQL数据库
  10. 计算机用户名怎么改好听,电脑维修店名字好听易记