linux中usleep和sleep有什么區別

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版本的不同而不同</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視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享