linux中sleep命令 nanosleep小延時不能實現(xiàn),這個函數(shù)跟select,sleep用什么區(qū)別?
nanosleep小延時不能實現(xiàn),這個函數(shù)跟select,sleep用什么區(qū)別?Linux中時間相關(guān)函數(shù)的精度基于Linux內(nèi)核中的jiffies,jiffies取決定系統(tǒng)可編程定時器的值,即Hz,這
nanosleep小延時不能實現(xiàn),這個函數(shù)跟select,sleep用什么區(qū)別?
Linux中時間相關(guān)函數(shù)的精度基于Linux內(nèi)核中的jiffies,jiffies取決定系統(tǒng)可編程定時器的值,即Hz,這在Linux中很常見X86的Hz值為100,即每秒振動10次,因此精度為10ms。因此,OS時間的最高精度只能是10ms,無論是使用nanosleep還是select,最高精度只能是10ms
如果想獲得更高精度的時間,需要訪問時鐘的RTC寄存器。在Linux中,您可以通過IOCTL訪問/dev/RTC
Windows中的sleep()函數(shù)需要包含Windows。H頭文件,而Linux中的頭文件需要包含unistd。H頭文件,表示sleep()函數(shù)不是標準的C語言庫,windows中sleep()函數(shù)的睡眠時間為毫秒,Linux中sleep()函數(shù)的睡眠時間為秒。如果需要實現(xiàn)更精確的時間,可以在Linux中使用usleep()函數(shù)windows下似乎沒有更精確的級別,只有毫秒級別。
windows下的Sleep和linux下的sleep有什么區(qū)別?
選擇用于設(shè)置超時時間。第一個參數(shù)是文件號。如果文件被讀取了很長時間而沒有返回,它將超時并跳出。這部分代碼將文件號設(shè)置為0,這意味著它僅用于控制延遲。不過,看看這部分代碼,顯然只是為了實現(xiàn)更精確的定時睡眠。這部分代碼之所以這樣做,是因為Linux的sleep函數(shù)本身非常不準確(Windows也是如此)。在線程多、CPU任務(wù)重的情況下,休眠函數(shù)的精度根本不能滿足要求。所以在這段代碼中使用select來代替sleep,這更準確。其準確性與內(nèi)核有關(guān)。如果確定內(nèi)核的勾選頻率,一般是100Hz和1000Hz(因內(nèi)核版本不同而有所不同),也就是說,select long可以精確到10ms或1ms,但是sleep不能,所以這個函數(shù)最重要的作用是用高精度的select函數(shù)代替低精度的sleep函數(shù)來實現(xiàn)更多的功能精確延時
睡眠命令公用工具命令睡眠命令暫停指定時間。Syntax sleep parameter time:指定暫停的時間長度。時間長度可以后跟s、m、h或D,其中s是秒,m是分鐘,h是小時,D是天數(shù)。有時實例正在編寫一些以循環(huán)方式運行的監(jiān)視腳本。必須設(shè)置時間間隔。下面是shell進度條的腳本演示,用于在腳本中生成延遲。#!/bin/bashb=“”for((i=0$i<=100i))doprintf”進度:[%-100s]%d%%r“$b$isleep0.1b=$bdone