一个线程的优先级设为‘最高’,其他正常,除了一个实时显示的线程(时间关键),线程中一个函数调用执行时,会发生context switch,不知为什么,不是优先级调高了,就不会切换到另一个线程了吗,当然我这个函数调用所占的时间很少,单步调试只有2~3ms,执行的时候成了90ms,中间应该是发生了context switch。按理说是不是这么小的一个函数,应该执行完以后在switch context,再说100ms的时间片怎么可能偏偏到这就用完了。

解决方案 »

  1.   

    这个正常啊,普通线程任何时候都有可能切换context
      

  2.   

    用SetPriorityClass把进程的优先级类也设为最高
      

  3.   


    这么说,context switch是由那个实时更新窗口的线程引起的?但是我将线程优先级在提高到‘时间关键’,按说二者优先级一样了,应该执行完时间片再转换线程,可为什么还是那样。
      

  4.   

    windows任务调度的时间片是由操作系统管理的,作为应用层无法修改。
      

  5.   

    忘了说,我在wince下做的,调用函数cesetthreadquantum可以修改线程的时间片
      

  6.   

    这么说,我要在wince内核定制的时候要尽量精简,加载的进程越少越好控制
      

  7.   

    Sorry,..."SetPriorityClass
    ......
    Windows CE: Unsupported."但应该有这么一个概念
      

  8.   

    问题的最后解决是,项目属性->C\C++->优化->最快速度,在这个函数内部就不发生context switch了。