我想Timer只应在前一次调用返回或完成执行时调用代码?

时间:2012-06-20 18:30:50

标签: c++

据我所知,Timer是异步运行的,所以如果应用了一个非常短的持续时间计时器,它会多次调用定时器代码,以防前一次调用尚未完成......

如果之前的调用尚未完成,我不想调用timer,因为这会导致我的程序中出现断言,因为多次调用会一次尝试共享单个资源..这会导致异常并且程序终止...

请告诉我如何将计时器调用与之前的函数调用同步..

2 个答案:

答案 0 :(得分:1)

使用信号量。

当你开始上次通话时,按下信号量。 完成执行后的信号量。

计时器可以随时触发,它会点击信号量并等待当前任务完成,然后再尝试访问该功能。

答案 1 :(得分:0)

void OnTimer()
{
   static bool inTimer = false; 
   if ( inTimer ) 
       return; 
   inTimer = true;   
   .... // do things
   inTimer = false;
}