首頁  >  文章  >  運維  >  linux中usleep和sleep有什麼差別

linux中usleep和sleep有什麼差別

WBOY
WBOY原創
2022-07-19 15:00:564089瀏覽

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

linux中usleep和sleep有什麼差別

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

linux中usleep和sleep有什麼差別

(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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn