日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数

發布時間:2025/6/15 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
三種睡眠時間函數的區別:linux 的sleep()、usleep()、nanosleep()函數




(1)sleep()-------以秒為單位
unsigned int sleep(unsigned int seconds);
sleep()非系統調用,sleep()是在庫函數中實現的,它是通過alarm()來設定報警時間,使用sigsuspend()將進程掛起在信號SIGALARM上。
sleep()只能精確到秒級上。sleep()會令目前的進程暫停,直到達到參數seconds 所指定的時間,或是被信號所中斷。
#include<unistd.h>
return:若進程暫停到參數seconds 所指定的時間,成功則返回0,若有信號中斷則返回剩余秒數。


(2)usleep()----以微秒為單位
unsigned int usleep(unsigned int useconds);
除了時間單位為微秒以外,在使用上與sleep()差不多。還有就是實現也是不同的,sleep因為是用alarm實現的,所以時間單位為s ,而usleep的時間單位為us
,那肯定不是由alarm實現的,所以說它們的實現不同,但都是linux用的,而window下不能用,因為都是sleep和usleep都是在unistd.h下定義的。
#include<unistd.h>
return:若進程暫停到參數seconds 所指定的時間,成功則返回0,若有信號中斷則返回剩余微秒數。


(3)nanosleep( )---------以納秒為單位
struct timespec
?{
? time_t ?tv_sec; ? ? ? ? /* 秒seconds */
?long ? ?tv_nsec; ? ? ? ?/* 納秒nanoseconds */
?};
int nanosleep(const struct timespec *req, struct timespec *rem);

#include<time.h>
這個函數功能是暫停某個進程直到你規定的時間后恢復,參數req就是你要暫停的時間,其中req->tv_sec是以秒為單位,而tv_nsec以毫微秒為單位(10的-9次方秒)。由于調用nanosleep是是進程進入TASK_INTERRUPTIBLE,這種狀態是會相應信號而進入TASK_RUNNING狀態的,這就意味著有可能會沒有等到你規定的時間就因為其它信號而喚醒,此時函數返回-1,切還剩余的時間會被記錄在rem中。
return: 若進程暫停到參數*req所指定的時間,成功則返回0,若有信號中斷則返回-1,并且將剩余微秒數記錄在*rem中。

注意:unistd.h 是 unix 系統標準頭文件,用于系統調用,相當于win32中的windows.h,unistd.h 定義的函數只能用于UNIX環境中,而不能用于windows。所以sleep 和 usleep 只能用于linux下,而不能用于windows 。
nalosleep 和 其它時間日期操作函數一樣都是定義在time.h中的,所以都適用

總結

以上是生活随笔為你收集整理的三种睡眠时间函数的区别:linux 的sleep()、usleep()、nanosleep()函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。