nanosleep

nanosleep()函式會導致當前的執行緒將暫停執行,直到rqtp參數所指定的時間間隔。或者在指定時間間隔內有信號傳遞到當前執行緒,將引起當前執行緒調用信號捕獲函式或終止該執行緒。

基本介紹

  • 中文名:nanosleep
  • 返回值:0表示請示的時間間隔結束
  • 注意:rem不為空
  • 功能:暫停執行緒直到規定的時間後恢復
簡介,函式原型,描述,返回值,功能,

簡介

函式原型

#include <time.h>
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);

描述

nanosleep()函式會導致當前的執行緒將暫停執行,直到rqtp參數所指定的時間間隔。或者在指定時間贈熱阿間隔內有信號傳遞到當前執行緒,將引起當前執行緒調用信號捕獲函式或終止才套墓榆該執行緒。
暫停時間可能超過請求時間,因為參數值是sleep粒度的整數倍數或者因為其他活動的系統調度。
但是,除了被信號中斷的情況下,暫停時間不會少於rqtp指希探境定的時間,由系統時鐘CLOCK_REALTIME測量。
使用nanosleep()函式對其他行為沒有影響,不堵塞任何信號。

返回值

0 :請示的時間間隔結束。
-1:信號中斷或失敗,並設定errno。
如果rmtp參數不只遷少為空,它所引用的timespec結構更新為包含剩餘時間的間隔量(請求的時間減去實際睡眠時間)。如果rmtp參數為NULL,不返回的民淚剩餘時旬漏凝影間。

功能

這個函式功能是暫停某個執行緒直到你規定的時間後恢復,參數req就是你要暫停的時間,其中req->tv_sec是以秒為單位,而tv_nsec以納秒為單位(10的-9次方秒),範圍是[0,999999999]。由於調用nanosleep是使執行緒進入TASK_INTERRUPTIBLE,這種狀態是會回響信號而進入TASK_RUNNING狀態的,這就意味著有可能會沒有等到你規定的時間就因為其它信號而喚醒,此時函式返回-1,且還剩餘的時間會被記錄在rem中(rem不為空的情況下)。地頌盛
nanosleep可以很好的保留中斷時剩餘時間,是比sleep()函式更高精度的時間函式

相關詞條

熱門詞條

聯絡我們