计时器可以允许在某一时间调度一个通知。睡眠可以进程或线程挂起停留一段时间。此文讲解设置时间和睡眠的接口,它包括:
* 设置间隔时间的经典UNIX APIs , 如setitimer()和alarm() ,当某一段时间过去之后,通知进程。
* 允许进程睡眠一定时间的API。
* POSIX.1b 时钟和时间APIs。
* Linux特定的timerfd工具, 允许时间的创建,它的过期时间可以从文件描述符读取。
(1)间隔计时器
#inlcude <sys/time.h> int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);
使用它,进程可以建立三种不同的计时器:(1)ITMER_REAL :创建一个实时时间的计时器, 当时间过期时, 它会为此进程产生SIGALRM信号。
(2)ITIMER_VIRTUAL: 创建一个虚拟时间(用户模式CPU时间)。当时间过期时, 它会为此进程产生SIGVTALRM
(3)ITIMER_PROF: 创建一个profiling计时器。 它是用户模式和内核模式CPU时间的总和,它会为此产生SIGPROF信号。
(2)结构体; struct itimeval{
struct timeval it_interval; /* 时间间隔 */
struct timeval it_value; /* 当前时间(过期时间)*/}
struct timeval{
time_t tv_sec; /* 秒*/
suseconds_t tv_usec; /* Microseconds(long int)*/}