我用函数setitimer(ITIMER_REAL, &val, NULL)设置定时器为100ms执行一次响应函数,但在控制器上运行时差不多160ms才运行一次响应函数,这是怎么回事?应该怎么写才能在实际运行中也达到100ms执行一次响应函数?
定时器初始化函数:
void init_time()
{
struct itimerval val;
val.it_value.tv_sec = 0; //秒
val.it_value.tv_usec = 100000; //微秒
val.it_interval = val.it_value;
setitimer(ITIMER_REAL, &val, NULL);
}
sigaction函数:
void init_sigaction()
{
struct sigaction act;
act.sa_handler = timeout_func; //设置信号处理函数
act.sa_flags = 0;
sigemptyset(&act.sa_mask);
sigaction(SIGALRM, &act, NULL);
} |