有一些延时函数写法非常占用CPU,比如while(gettime()>timeSet){},在Linux中应当尽量使用系统调用执行延时,在延时等待期间执行一次进程调度,降低延时函数的CPU占用率。

Linux中的延时函数有sleep,usleep和nanosleep,以及select。

1、sleep

sleep()调用alarm()来设定报警时间,调用sigsuspend()将进程挂起在信号SIGALARM上。

2、usleep

usleep()有可能会影响信号,用于延迟挂起进程。

3、nanosleep

nanosleep()是Linux系统调用,使进程进入TASK_INTERRUPTIBLE,脱离就绪队列,然后进行一次进程调度再由内核在规定的时间后发送信号来唤醒这个进程调用进程睡眠,nanosleep()精度不是很高。

4、select

select的精度是微妙,比较精确,将相关参数传递给内核。

5、推荐使用的函数

void delayms (unsigned int howLong)
{struct timespec sleeper, dummy ;sleeper.tv_sec  = (time_t)(howLong / 1000) ;sleeper.tv_nsec = (long)(howLong % 1000) * 1000000 ;nanosleep (&sleeper, &dummy) ;
}

Linux 延时函数相关推荐

  1. linux延时函数及头文件,linux延时函数

    应用程序的延时函数: 头文件: #include 函数:unsigned int sleep (unsigned int seconds);//n秒 此外:int usleep (useconds_t ...

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

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

  3. linux延时与定时计算

    linux延时函数 高精度时间函数 高精度的设置时间函数和读取时间函数 int gettimeofday(struct timeval *tv, struct timezone *tz); int s ...

  4. Linux Shell中的延时函数

    Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理. 所以经常要用到 sleep 或 usleep 函数. 下面来说一下  sleep 和 usleep 的区 ...

  5. Linux中的延时函数

    来源http://www.linuxidc.com/Linux/2008-06/13407.htm 应用层: #include <unistd.h>      1.unsigned int ...

  6. linux 用户空间 和 内核空间 延时函数

    用户空间: 1.unsigned int sleep(unsigned int seconds);   sleep()会使当前程序休眠seconds秒.如果sleep()没睡饱,它将会返回还需要补眠的 ...

  7. Linux下的延时函数

    Linux下的延时函数 1.sleep函数 头文件:#include<unistd.h> 功能:执行挂起操作一段时间,以秒为单位 一般形式:unsigned sleep(unsigned ...

  8. linux内核的延时函数,linux中内核延时函数 (转)

    第一类延时函数原型是:(忙等) void ndelay(unsigned long nsecs); void udelay(unsigned long usecs); void mdelay(unsi ...

  9. Linux内核中的延时函数详解

    内核中涉及的延时主要有两种实现方式:忙等待或者睡眠等待.前者阻塞程序,在延时时间到达前一直占用CPU,而后者是将进程挂起(置进程于睡眠状态并释放CPU资源).所以,前者一般用在延时时间在毫秒以内的精确 ...

最新文章

  1. C++/C++11中头文件functional的使用
  2. MVC+Ninject+三层架构+代码生成 -- 总结(四、數據層)
  3. 静态链接中的那点事儿(2):C++二进制兼容性及跨平台初步
  4. linux无盘windows系统,Linux无盘启动Win2000终端
  5. tinyxml在linux和windows下的编译及使用详解
  6. 如何处理UI5一般性错误Cannot read property md of undefined
  7. Autofac实现有条件的DI
  8. ubuntu 2018 apt 代理proxy设置
  9. Windows下Redis安装的那些事儿!
  10. 10.UNIX 环境高级编程--信号
  11. php检索特定的关键字的函数,javascript、php关键字搜索函数的使用方法
  12. oracle建表插数据
  13. 【建议收藏】产品经理面试题合集
  14. Windows Embedded Standard 7 快速入门指南 2 of 4
  15. BZOJ 5336: [TJOI2018]party Dp套Dp
  16. 技术领导者空降后,如何管理全新的团队
  17. Stellarium 0.19.0 发布,开源 3D 天象模拟软件
  18. AutoCAD哪个版本好
  19. 金丝雀测试实践_金丝雀测试
  20. 解决Unknown column ‘xxx‘ in ‘where clause‘问题!!(泪的教训!!)

热门文章

  1. 你是第几名:Excel 中 Large 和 Small 的用法
  2. API函数的调用(包含一个大小写的问题)
  3. java 线程工厂_Java并发编程:Java的四种线程池的使用,以及自定义线程工厂
  4. mysql 数据复制停止工作_linux – Mysql GTID复制停止工作
  5. matlab drawnow连成曲线,precision recall曲线Matlab实现
  6. 云计算机创意名,有创意的道路名字推荐,分享一些好听有内涵的路名
  7. jQuery判断当前点击的是第几个li的代码
  8. Flask使用Flask-SQLAlchemy操作MySQL数据库
  9. MSP432P401R TI Drivers 库函数学习笔记(八)ADC
  10. Exynos4412裸机开发 —— RTC 实时时钟单元