国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux下成功實現秒以下精確定時與休眠的方法

2024-08-28 00:13:16
字體:
來源:轉載
供稿:網友

Linux中提供的休眠函數是sleep和alarm,但是他們僅僅提供以秒為單位的休眠,這中休眠有些進程顯然太長了,那么怎樣才能使進程以更小的時間分辨率休眠呢?

我知道的方法有2種,下面就做分別介紹。

第一種方法是使用定時器,Linux提供的定時器函數是:

int  setitimer(int which, const struct itimerval *value, struct

         itimerval *ovalue);

which指定那種定時器。Linux提供3種定時器:

 TIMER_REAL: 準確定時器,超時會發出SIGALRM信號;

 TIMER_VIRTUAL: 虛擬定時器,只記進程時間,所以會根據進程執行時間而變化,不能實現準確定時,超時發出SIGVTALRM信號;

 TIMER_PROF: 梗概計時器,它會根據進程時間和系統時間而變化,不能實現準確定時,超時發出SIGPROF信號;

 在進程中應該捕捉所設定時器會發出的信號,因為進程收到定時器超時發出的信號后,默認動作是終止。

value是設置定時器時間,相關結構如下:

struct itimerval {

      struct timeval it_interval;

      struct timeval it_value;

 };

 struct timeval {

      long tv_sec;       

      long tv_usec;

 };

it_interval指定間隔時間,it_value指定初始定時時間。如果只指定it_value,就是實現一次定時;如果同時指定it_interval,則超時后,系統會重新初始化it_value為it_interval,實現重復定時;兩者都清零,則會清除定時器。

tv_sec提供秒級精度,tv_usec提供微秒級精度,以值大的為先,注意1s = 1000000ms。

ovalue用來保存先前的值,常設為NULL。

如果是以setitimer提供的定時器來休眠,只需阻塞等待定時器信號就可以了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 府谷县| 郧西县| 富锦市| 吴桥县| 黄石市| 大邑县| 哈尔滨市| 宁武县| 长岭县| 宝坻区| 西和县| 巧家县| 万盛区| 邻水| 措美县| 津南区| 佛冈县| 淳安县| 琼中| 绍兴市| 曲松县| 铜陵市| 聂拉木县| 三台县| 武清区| 杨浦区| 泗阳县| 南昌市| 沁阳市| 蓝山县| 万安县| 保靖县| 德保县| 惠来县| 灯塔市| 隆子县| 东乌珠穆沁旗| 渑池县| 洛川县| 北辰区| 台南市|