linux msleep 头文件,Linux延迟函数
從Linux應(yīng)用層和內(nèi)核兩方面來區(qū)分下延遲函數(shù):
1. 應(yīng)用層
1>
sleep usleep
微秒級(jí)
頭文件為;
3> nanosleep
相比標(biāo)準(zhǔn)UNIX 的sleep 調(diào)用具有更高高精度的版本。和普通的sleep 調(diào)用計(jì)算整秒數(shù)不同,nanosleep 接受一個(gè)指向一個(gè)struct timespec 對(duì)象的指針作為參數(shù),它可以表示毫微秒(nanosecond,十億分之一秒)的時(shí)間。然而,了解 Linux 內(nèi)核的工作細(xì)節(jié)后可知,nanosleep 所提供的真正精確度是10毫秒——比 sleep 提供的要精確。這個(gè)附加的精確度非常有用,比如說,可以根為反復(fù)進(jìn)行的任務(wù)設(shè)置更短的間隔。struct
timespec 由兩部分構(gòu)成:tv_sec 表示整秒數(shù)部分;tv_nsec 則表示毫微秒。tv_nesc 的值必須小于109。
nanosleep 相比sleep具有另一個(gè)優(yōu)點(diǎn)。與sleep 相同,nanosleep 調(diào)用可以被信號(hào)中斷,這是errno
將被設(shè)置為 EINTR 而調(diào)用將返回 -1。但是,nanosleep 的第二個(gè)參數(shù),另一個(gè)指向struct timespec 對(duì)象的指針,如果不為 NULL 則在這種情況下它將被寫入剩余的時(shí)間(這就是所請(qǐng)求的睡眠時(shí)間和實(shí)際睡眠時(shí)間的差)。這使重新開始睡眠變的很容易。
頭文件 。
2. 內(nèi)核
1> udelay mdelay ndelay
實(shí)現(xiàn)的原理本質(zhì)上都是忙等待,ndelay和mdelay都是通過udelay衍生出來的.
由于這些delay函數(shù)本質(zhì)上都是忙等待,對(duì)于長時(shí)間的忙等待意味這無謂的耗費(fèi)著cpu的資源.
udelay一般適用于一個(gè)比較小的delay,如果你填的數(shù)大于2000,系統(tǒng)會(huì)認(rèn)為你這個(gè)是一個(gè)錯(cuò)誤的delay函數(shù),因此如果需要2ms以上的delay需要使用mdelay函數(shù)。
2> msleep,ssleep
毫秒級(jí)的延時(shí),這些函數(shù)將使得調(diào)用它的進(jìn)程睡眠參數(shù)指定的時(shí)間。
總之,*sleep是可以進(jìn)行系統(tǒng)調(diào)度,耗用資源小,*delay下是不能進(jìn)行系統(tǒng)調(diào)度,非常耗費(fèi)資源。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。
總結(jié)
以上是生活随笔為你收集整理的linux msleep 头文件,Linux延迟函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle awr 数据删除,Orac
- 下一篇: 年薪百万 华为又一天才少年曝光:发表21