linux中usleep和sleep的區別:sleep函數用于執行掛起指定的秒數,而usleep功能是執行掛起指定的微秒數。sleep是非系統調用,在庫函數中實現,是通過alarm()來設定報警時間的,usleep除了時間單位為微秒以外,在使用上與sleep差不多。
本教程操作環境:linux7.3系統、Dell G3電腦。
linux中usleep和sleep有什么區別
(1)sleep()——-以秒為單位
?頭文件:
?#include?<windows.h>?//?在VC中使用帶上頭文件 ????????#include?<unistd.h>??//?在gcc編譯器中,使用的頭文件因gcc版本的不同而不同</unistd.h></windows.h>
?功? 能: 執行掛起指定的秒數
?語? 法:?
unsigned?int?sleep(unsigned?int?seconds);
sleep()非系統調用,sleep()是在庫函數中實現的,它是通過alarm()來設定報警時間,使用sigsuspend()將進程掛起在信號SIGALARM上。
sleep()只能精確到秒級上。sleep()會令目前的進程暫停,直到達到參數seconds 所指定的時間,或是被信號所中斷。
#include
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; ?}</stdio.h></windows.h>
(2)usleep()—-以微秒為單位
?頭文件:?
#include?<unistd.h></unistd.h>
?功? 能: 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視頻教程