怎样让线程休眠时,不占用CPU资源

解决方案 »

  1.   

    sleep(60),...
    这个是睡0.06秒
      

  2.   

    cpu不是被sleep的线程占用了,你的程序应该还有其他部分正在运行占用cpu的,比如main(),不可能就这一个线程吧。
      

  3.   

    ..sleep得时候怎么会占用CPU资源呢。睡眠得时候是不回占资源得。
      

  4.   

    回复人: foxty(火狐) ( ) 信誉:100  2005-03-04 23:13:00  得分: 0  
     
     
       ..sleep得时候怎么会占用CPU资源呢。睡眠得时候是不回占资源得。
      
     
    哦,是这样的啊?!
      

  5.   

    while(true )
    {
     sleep(100);
     //捕获异常
    }当进入这个死循环时,CUP的占用率很低很低,我想楼主你一定搞错了吧。好好检查一下其他地方。但是下面这个代码。
    while(true)
    {
       ; //什么都不干
    }CPU 占用100 % , 楼主要不要跟我赌一把。
      

  6.   

              楼主请专门编一段小程序试一试,               sleep(int a);
                    是不会占用太多资源的, 几乎可以忽略。
      

  7.   

    楼主粗心了,sleep()里的时间是以毫秒为单位的
      

  8.   

    回复人: foxty(火狐) ( ) 信誉:100  2005-03-04 23:13:00  得分: 0  
     
     
       ..sleep得时候怎么会占用CPU资源呢。睡眠得时候是不回占资源得。
      
           ================================这个结论有什么依据吗???我记得在什么地方见过 说:
    sleep()是什么什么建立了一个内循环,是非常消耗资源的?
    不知道是怎么回事?
      

  9.   

    windows消息处理机制也是循环. 你看他消耗多少cpu? 目前的硬件能力和操作系统,处理循环有很多技巧.只要程序用了规定方法的循环,它就不会占用特别多cpu.比如你用c/c++写while ( true ) {}, 一样会占用很多cpu. 但是你写windows消息控制的那个while(){}就不会有事.写线程处理的while( true ) { if ( condition ) sleep(100000000); } 也不会有事.
      

  10.   

    sleep()是不占CPU的,不放心干脆用wait()+notify()好了
      

  11.   

    插一下嘴
    sleep(时间)的话睡眠的时间并不一定是设定的时间