我SetTimer每1秒调用1下函数A,函数A有个方法是阻塞的最长可能达到30秒,
那么在最坏的情况下是不是:30秒阻塞过程中,又把函数A调用了30次,这会造成什么结果?
是不是需要什么别的方式来解决这个问题?

解决方案 »

  1.   

    永远阻塞下去系统的CPU利用率为0%,就像死机一样
      

  2.   

    内部SetTimer是用线程处理的吗?
    我开1个线程调函数A是否可以解决阻塞对系统的影响?
      

  3.   

    MFC的Timer没用过,用过timeSetEvent、timeKillEvent自定义了一个Timer class。
    在Timer的回调函数中,调用SetEvent。
    在主线程中,使用WaitForSingleObject或WaitForMultipleObjects等待Timer事件。
    Timer事件处理完毕后,调用ResetEvent。对Timer事件的处理线程与Timer线程异步进行。
      

  4.   

    如果单线程程序,函数中阻塞会导致消息循环阻塞,以后不会收到WM_TIMER消息,所以不会一个劲的调用。如果是多线程,可以在函数中设置一个变量,控制函数不可重入。