linux msleep 头文件,Linux延迟函数

本文介绍了Linux中用于实现延时操作的应用层和内核层函数,包括应用层的sleep、usleep、nanosleep等,以及内核层的udelay、mdelay、ndelay等,并对比了它们之间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从Linux应用层和内核两方面来区分下延迟函数:

1. 应用层

1>

sleep usleep

微秒级

头文件为;

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 则在这种情况下它将被写入剩余的时间(这就是所请求的睡眠时间和实际睡眠时间的差)。这使重新开始睡眠变的很容易。

头文件 。

2. 内核

1> udelay mdelay ndelay

实现的原理本质上都是忙等待,ndelay和mdelay都是通过udelay衍生出来的.

由于这些delay函数本质上都是忙等待,对于长时间的忙等待意味这无谓的耗费着cpu的资源.

udelay一般适用于一个比较小的delay,如果你填的数大于2000,系统会认为你这个是一个错误的delay函数,因此如果需要2ms以上的delay需要使用mdelay函数。

2> msleep,ssleep

毫秒级的延时,这些函数将使得调用它的进程睡眠参数指定的时间。

总之,*sleep是可以进行系统调度,耗用资源小,*delay下是不能进行系统调度,非常耗费资源。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值