zsddn2003 发表于 2011-11-28 19:25

linux下定时器的问题

我用函数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);
}

delin17 发表于 2011-11-30 12:24

软定时器,是会有一定的延时的。
直接用硬件定时器

一朝成名 发表于 2011-12-1 19:49

如ls说的,精度不会很高。
页: [1]
查看完整版本: linux下定时器的问题