创建/设置优先级如下:
    m_pProcessDataThread=AfxBeginThread(ProcessDataThread,THREAD_PRIORITY_NORMAL,NULL);
    m_pRecvFileThread->SetThreadPriority(THREAD_PRIORITY_BELOW_NORMAL);   说明:
        1/ ProcessDataThread线程中为十分耗时的操作!
        2/ 界面在主线程处理的!
        
   问题:
        1/ 上面的方法设置优先级能不能起到作用?
        2/ 怎么设置成:THREAD_PRIORITY_ABOVE_NORMAL & THREAD_PRIORITY_IDLE 效果没有什么差 
           别?(仍然占用系统资源厉害,并影响到了界面刷新!,明显感觉到机器很慢!)

解决方案 »

  1.   

    在线程ProcessDataThread中加入Sleep
      

  2.   

    如果你的线程所做的工作就是Busy loop,就是将优先级调整到最低,仍然是会消耗很多系统资源的。
    可以简单的加上一些Sleep。
      

  3.   

    同意在适当的位置加上Sleep。20 ms 即可。
      

  4.   

    我再顶,这种请况只能加sleep()了么?!?
    有没有其它方法可用阿?!
      

  5.   

    ProcessDataThread线程中为十分耗时的操作!那你应该在这个函数里面经常的调用pumpmessage
      

  6.   

    没sleep或者什么地方有死循环
      

  7.   

    不过如果只是占CPU资源,设置为IDLE后应该不会使得界面慢,
    是不是还有频繁的IO访问和大量内存分配是该从优化你的代码角度考虑
      

  8.   

    看来除了使用sleep外别无它法了, 
    ProcessDataThread线程中为十分耗时的操作!那你应该在这个函数里面经常的调用pumpmessage---------------------------------------------->不知道是什么意思?!
      

  9.   

    你的十分耗时指的是什么?是纯数据处理吗?纯数据处理CPU利用率会一直很高,可以考虑在你的处理流程中适当的加入Sleep(0),主动放弃CPU,让其他饥饿线程得到CPU timeslot,或者改进你的算法,如果不是纯数据处理流程,或者加入消息循环,是当前消息得到处理,使重画等消息得到处理
      

  10.   

    加Sleep吧,我写的一个程序刚开始CPU总是100%,界面响应明显迟缓但在循环中逐渐增加Sleep,来调整到一个比较合适的时间延时,CPU占用不会超过20%了:P
      

  11.   

    Sleep()合适的时间就可以,一般我用50ms
      

  12.   

    优先级低cpu仅对当前程序给予少量的cpu时间,和资源无关,想降低只有从程序的算法入手
      

  13.   

    给Sleep传入的参数应该用0,唉
    什么20ms, 50ms,都是乱弹琴,---
    : Chance is a gift for those who try
      

  14.   

    9494.就像下面这样的代码:
    while (true)
    {
    }
    运行时即使你把优先级设置为最低CPU的耗用率仍然是100%
    至于楼上所说的Sleep问题,以下是MSDN对Sleep函数的解释.void Sleep(
      DWORD dwMilliseconds
    );Parameters
    dwMilliseconds 
    [in] Minimum time interval for which execution is to be suspended, in milliseconds. 
    A value of zero causes the thread to relinquish the remainder of its time slice to any other thread of equal priority that is ready to run. If there are no other threads of equal priority ready to run, the function returns immediately, and the thread continues execution.A value of INFINITE indicates that the suspension should not time out.看到了吧?如果设置为0的话,除非还有同优先级的线程,否则Sleep会马上返回.等于没用嘛!
    而且,如果ProcessDataThread十分耗时的话,建议还是不要用Sleep,因为在Sleep时你的线程
    只是在等待,虾米都不会做,这将导致所需的时间更长!
      

  15.   

    呵呵,他说线程运行影响了主线程刷新
    循环里用Sleep(0)应该是解决的好办法。主线程需要运行的时候就把cpu交给主线程。否则就自身满负荷运行。---
    : Chance is a gift for those who try