linux定时休眠实现,Linux下如何实现秒以下精确定时与休眠

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;

};

你可能感兴趣的:(linux定时休眠实现)