概述
linux的内核时钟刷新率是10ms(x86平台)。
但如果40ms那当然是可以的,因为那是4个10ms。
处理过程其实就是安装一个SIGALRM的信号处理函数。
1.#include <sys/time.h>
2.调用setitimer安装定时器:
它有三个参数第一个设ITIMER_REAL,第二和三个参数是新的时钟间隔和之前设置的时钟间隔。
struct itimerval {
struct timeval it_interval; //设为时钟间隔 40ms,既it_interval.tv_sec=0;it_interval.tv_usec=40*1000; tv_usec是微秒
struct timeval it_value; //设为第一次触发的时钟间隔,其实只被执行一次,以后按照it_interval的值,这里你也可以同上设。
}
3.调用sigaction安装SIGALRM的处理函数,我就不细说了
#include <sys/select.h>
#include <stdio.h>
#include <stdlib.h>
void Timer(int sec, long usec)
{
struct timeval tvSelect;
tvSelect.tv_sec = sec;
tvSelect.tv_usec = usec;
select(FD_SETSIZE, NULL, NULL, NULL, &tvSelect);
};
int main()
{
printf("--- begin ---");
Timer(3, 1000*500);
printf("--- bye ---");
}
最后
以上就是炙热嚓茶为你收集整理的linux 精确定时器的全部内容,希望文章能够帮你解决linux 精确定时器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复