专栏中心

EEPW首页 > 专栏 > Linux延迟函数

Linux延迟函数

发布人:电子禅石 时间:2019-05-28 来源:工程师 发布文章
从Linux应用层和内核两方面来区分下延迟函数:
1. 应用层
1>
sleep usleep 
微秒级
头文件为<unistd.h>;
3> nanosleep
 
    相比标准UNIX 的sleep 调用具有更高高精度的版本。和普通的sleep 调用计算整秒数不同,nanosleep 接受一个指向一个struct timespec 对象的指针作为参数,它可以表示毫微秒(nanosecond,十亿分之一秒)的时间。然而,了解 Linux 内核的工作细节后可知,nanosleep 所提供的真正精确度是10毫秒——比 sleep 提供的要精确。这个附加的精确度非常有用,比如说,可以根为反复进行的任务设置更短的间隔。struct
 timespec 由两部分构成:tv_sec 表示整秒数部分;tv_nsec 则表示毫微秒。tv_nesc 的值必须小于109。
    nanosleep 相比sleep具有另一个优点。与sleep 相同,nanosleep 调用可以被信号中断,这是errno
 将被设置为 EINTR 而调用将返回 -1。但是,nanosleep 的第二个参数,另一个指向struct timespec 对象的指针,如果不为 NULL 则在这种情况下它将被写入剩余的时间(这就是所请求的睡眠时间和实际睡眠时间的差)。这使重新开始睡眠变的很容易。
头文件 <time.h>。
2. 内核
1> udelay mdelay ndelay
    实现的原理本质上都是忙等待,ndelay和mdelay都是通过udelay衍生出来的.
    由于这些delay函数本质上都是忙等待,对于长时间的忙等待意味这无谓的耗费着cpu的资源.
    udelay一般适用于一个比较小的delay,如果你填的数大于2000,系统会认为你这个是一个错误的delay函数,因此如果需要2ms以上的delay需要使用mdelay函数。
2> msleep,ssleep
    毫秒级的延时,这些函数将使得调用它的进程睡眠参数指定的时间。
   
总之,*sleep是可以进行系统调度,耗用资源小,*delay下是不能进行系统调度,非常耗费资源。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

H桥电路

传特斯拉中国暂停推送FSD试用功能:原因未知

汽车电子 2025-03-24

甲骨文从AMD采购3万块MI355X

智能计算 2025-03-24

赛灵思Kintex-7收发器操作演示

视频 2011-12-16

allan0403_点阵测试、点阵倒计时、花样流水灯

视频 2011-12-16

磁滞

元件/连接器 2025-03-24

利用赛灵思FPGA解决方案攻克28nm产品设计最大挑战

视频 2011-12-16

电磁铁

2025-03-24

磁学

元件/连接器 2025-03-24

Vicor更高密度 - 电源在更小的空间容纳更多功能

英伟达计划在未来四年斥资5000亿美元采购芯片和电子产品

电磁学

LCD显示屏出现闪烁的原因与解决

输电线DTMF8通道转换开关

电源模块

资源下载 2007-02-28

下一代3D晶体管,迈出重要一步

EDA/PCB 2025-03-24

HBM新技术,横空出世

网络与存储 2025-03-24

lcd仿真器

资源下载 2007-02-28

四路输出12位 D A转换器DAC8420

中国芯工程

视频 2011-12-13
更多 培训课堂
更多 焦点
更多 视频

技术专区