linux中usleep和sleep有什麼差別

WBOY
發布: 2022-07-19 15:00:56
原創
3908 人瀏覽過

linux中usleep和sleep的區別:sleep函數用於執行掛起指定的秒數,而usleep功能是執行掛起指定的微秒數。 sleep是非系統調用,在函式庫函數中實現,是透過alarm()來設定警報時間的,usleep除了時間單位為微秒以外,在使用上與sleep差不多。

linux中usleep和sleep有什麼差別

本教學操作環境:linux7.3系統、Dell G3電腦。

linux中usleep和sleep有什麼差別

(1)sleep()-------以秒為單位

頭檔案:

#include  // 在VC中使用带上头文件 #include  // 在gcc编译器中,使用的头文件因gcc版本的不同而不同
登入後複製

功 能: 執行掛起指定的秒數

語 法:

unsigned int sleep(unsigned int seconds);
登入後複製

sleep()非系統調用,sleep()是在函式庫函數中實現的,它是透過alarm()來設定警報時間,使用sigsuspend()將進程掛起在訊號SIGALARM上。

sleep()只能精確到秒級上。 sleep()會令目前的程序暫停,直到達到參數seconds 所指定的時間,或被訊號中斷。

#include

return:若行程暫停到參數seconds 所指定的時間,成功則傳回0,若有訊號中斷則傳回剩餘秒數。

範例:

#include  #include int main() { int a; a=1; printf("hello"); sleep(a); /* VC 使用Sleep*/ printf("world"); return 0; }
登入後複製

(2)usleep()----以微秒為單位

頭檔:

#include 
登入後複製

功 能: usleep功能把進程掛起一段時間, 單位是微秒(百萬分之一秒);

語 法:

#
void usleep(int micro_seconds);
登入後複製

除了時間單位為微秒以外,使用上與sleep()差不多。還有實作也是不同的,sleep因為是用alarm實現的,所以時間單位為s ,而usleep的時間單位為us

,那肯定不是由alarm實現的,所以說它們的實現不同,但都是linux用的,而window下不能用,因為都是sleep和usleep都是在unistd.h下定義的。

#include

return:若行程暫停到參數seconds 所指定的時間,成功則傳回0,若有訊號中斷則傳回剩餘微秒數。

傳回值: 無

內容說明:本函數可暫時使程式停止執行。參數 micro_seconds 為要暫停的微秒數(us)。

註 意:

這個函數不能運作在windows 作業系統中。用在Linux的測試環境下面。

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

是一般情況下,延遲時間數量級是秒的時候,盡可能使用sleep()函數。

如果延遲時間為數十毫秒(1ms = 1000us),或更小,盡可能使用usleep()函數。這樣才能最佳的利用CPU時間

推薦學習:Linux影片教學

以上是linux中usleep和sleep有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!