usleep函式

usleep函式

usleep函式能把進程掛起一段時間, 單位是微秒(千分之一毫秒)。本函式可暫時使程式停止執行。參數 micro_seconds 為要暫停的微秒數(us)。 這個函式不能工作在windows 作業系統中。用在Linux的測試環境下面。

基本信息

頭檔案: unistd.h

語法: void usleep(int micro_seconds);

返回值: 無

注意事項

參見:usleep() 與sleep()類似,用於延遲掛起進程。進程被掛起放到ready queue。

是一般情況下,延遲時間數量級是秒的時候,儘可能使用sleep()函式。且此函式已被廢除,可使用nanosleep。如果延遲時間為幾十毫秒(1ms = 1000us),或者更小,儘可能使用usleep()函式。這樣才能最佳的利用CPU時間

該usleep()功能將導致調用執行緒暫停執行直到數微秒的實時參數指定了useconds或信號傳遞到調用執行緒,其作用是調用一個信號的捕獲功能或終止進程。暫停的時間可能比所要求的系統的其他活動的調度要長。

該useconds參數必須小於1000000。如果useconds值是0,則調用沒有影響。

如果一個sigalrm信號生成調用進程的執行過程中,如果usleep() sigalrm信號被忽略或無法交貨,這是未指定是否usleep()返回時的sigalrm預定的信號。如果信號是被封鎖,也未指定是否後尚未usleep()返回或是丟棄。

如果一個sigalrm信號生成調用進程執行usleep()期間,除了由於對alarm()事先打電話,如果sigalrm信號不被忽略或無法交貨,它是不確定的,是否有其他信號比造成任何影響usleep()返回。

如果信號捕捉功能的中斷usleep()檢查或變化的時間sigalrm將產生,與sigalrm信號相關的動作,或是否sigalrm信號被阻止從交貨,結果是不確定的。

如果信號捕捉功能的中斷usleep()和電話siglongjmp()或longjmp()恢復環境保存到usleep()呼叫之前,行動與sigalrm信號和時間,sigalrm信號將產生未指定。它還未指定是否sigalrm信號被阻斷,除非進程的信號禁止恢復作為環境的一部分。

實現可能限制定時器值的粒度。對於每個時間間隔定時器,如果請求的定時器值需要比實現支持細粒度的,實際的定時器的值將捨入為下一個支持的價值。

usleep()和任何以下之間的相互作用是不確定的:

相關詞條

相關搜尋

熱門詞條

聯絡我們