有一个问题困扰了我很久 timeSetEvent目前是这样一个情况,我做的播放器中用这个计时器去播放每一帧,一般情况下很正常
但是假如播放器在播放的时候 用户去做其他事情导致CPU忙不过来的情况下,会有一些异常情况比如说 当定时器播放到第10000毫秒的时候很正常,然后用户在第10001的时候去做其他事情了
导致CPU站用率很高,从而导致没有机会去处理定时器的动作,这种情况一直持续到20000毫秒
系统CPU才闲下来去处理定时器的动作,但是这个timeSetEvent的定时器有一个设计上的机制
那就是当20001毫秒闲下来后,这个定时器会把之前没做的那段10001毫秒~20000毫秒的动作补
做上,从而导致播放的那段视频一下子播放很快,由此导致CPU在补做这段动作时候也很高我希望计时器在CPU忙碌的完返回以后 不要去补做那一段时间的工作 可行吗
因为不补做也可以 直接播放下一帧画面好了 因为是线性的没有实时要求
我思考了很久实在想不出解决办法请教各位前辈了  谢谢

解决方案 »

  1.   

    看上去你好像在timeSetEvent的回调函数里直接调用了绘图的操作
    是不是可以新开一个线程专门做绘图的操作,在回调函数里仅仅提供一个触发器让线程工作
      

  2.   

    timeEvent处理函数里加个状态,太忙就跳过
    {
        static BOOL bBusy = FALSE;
        if(bBusy) return;
        bBusy = TRUE;
           .....
           .....
           .....    bBusy = FALSE;
    }
    -----
    最好用线程