日期:2014-05-16  浏览次数:20804 次

linux定时器执行的一个函数没有执行完,又一次定时中断到来会怎样?
在一个程序当中使用timer_create创建定时器,并使用timer_settime设置定时器,假若该定时器到来时触发了其执行函数,但是第二次到来时若该函数还没有执行完会出现什么情况?
通过程序检测,使用下面函数时当多次触发只打印一次in func,那么难道内核知道该函数正在执行,我们又如何通过程序得知正在执行的信息?

void func(int signo)
{
    printf("in func\n");
    while(1);
}


万分感谢

------解决方案--------------------
你为什么不记录当前timer是否被执行呢。
------解决方案--------------------
要等第一次的中断函数执行完,才能执行第二次
------解决方案--------------------
根本的解决办法是不要这种耗时的放在中断中执行
------解决方案--------------------
设置一个原子变量做为标志
执行时置1,完了清0

中断产生后检测这个标志