linux中usleep和sleep的區別:sleep函數用於執行掛起指定的秒數,而usleep功能是執行掛起指定的微秒數。 sleep是非系統調用,在函式庫函數中實現,是透過alarm()來設定警報時間的,usleep除了時間單位為微秒以外,在使用上與sleep差不多。
本教學操作環境:linux7.3系統、Dell G3電腦。
(1)sleep()-------以秒為單位
頭檔案:
#include <windows.h> // 在VC中使用带上头文件 #include <unistd.h> // 在gcc编译器中,使用的头文件因gcc版本的不同而不同
功 能: 執行掛起指定的秒數
語 法:
unsigned int sleep(unsigned int seconds);
sleep()非系統調用,sleep()是在函式庫函數中實現的,它是透過alarm()來設定警報時間,使用sigsuspend()將進程掛起在訊號SIGALARM上。
sleep()只能精確到秒級上。 sleep()會令目前的程序暫停,直到達到參數seconds 所指定的時間,或被訊號中斷。
#includef55648144b4a1c5cce7ad2f6519be0f3
return:若行程暫停到參數seconds 所指定的時間,成功則傳回0,若有訊號中斷則傳回剩餘秒數。
範例:
#include <windows.h> #include<stdio.h> int main() { int a; a=1; printf("hello"); sleep(a); /* VC 使用Sleep*/ printf("world"); return 0; }
(2)usleep()----以微秒為單位
頭檔:
#include <unistd.h>
功 能: usleep功能把進程掛起一段時間, 單位是微秒(百萬分之一秒);
語 法:
#void usleep(int micro_seconds);
除了時間單位為微秒以外,使用上與sleep()差不多。還有實作也是不同的,sleep因為是用alarm實現的,所以時間單位為s ,而usleep的時間單位為us
,那肯定不是由alarm實現的,所以說它們的實現不同,但都是linux用的,而window下不能用,因為都是sleep和usleep都是在unistd.h下定義的。
#includef55648144b4a1c5cce7ad2f6519be0f3
return:若行程暫停到參數seconds 所指定的時間,成功則傳回0,若有訊號中斷則傳回剩餘微秒數。
傳回值: 無
內容說明:本函數可暫時使程式停止執行。參數 micro_seconds 為要暫停的微秒數(us)。
註 意:
這個函數不能運作在windows 作業系統中。用在Linux的測試環境下面。
參 見:usleep() 與sleep()類似,用於延遲掛起進程。進程被掛起放到reday queue。
是一般情況下,延遲時間數量級是秒的時候,盡可能使用sleep()函數。
如果延遲時間為數十毫秒(1ms = 1000us),或更小,盡可能使用usleep()函數。這樣才能最佳的利用CPU時間
推薦學習:Linux影片教學
以上是linux中usleep和sleep有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!