请问在vc中如何实现延时时间t,不要占用大量的cpu资源(不要用sleep,for()之类的)

解决方案 »

  1.   


    WaitForSingleObject
    WaitForMultipleObjects
    WaitForMultipleObjectsEx
      

  2.   

    请问你想要干嘛, 如果仅仅希望线程延时用 Sleep 足矣, 还想做其他的? 什么呢?
      

  3.   

    不能SLEEP,它会使CPU时间浪费的
      

  4.   

    谁讲  Sleep 会浪费 CPU 时间?你实际观察一下好不好?Sleep  就是让当前线程放弃CPU时间片.
      

  5.   

    使用SetTimer(1,n,NULL);在OnTimer中停止记时器
      

  6.   

    1: sleep 最好!(一般用)
    2:GetTickCount() 比较准确,CPU不是很耗费
    3:多媒体记时,很好,很精确,但CPU巨耗!
      

  7.   

    Sleep函数仅仅是当前的线程不被执行,看似占用处理器时间其实对于其他的进程(线程)完全没有占用感觉
      

  8.   

    如果你的程序是单线程的用下面的
    void Delay(long count)
    {
    MSG Msg; 
    for(int i=0;i<n*100;i++)
    while(PeekMessage(....))
       {
         Transform(&Msg);
         Dispatch(&Msg); 
       }
    }
    具体数值自己试?
      

  9.   

    实际上用Sleep()是合适的,它是起到暂时挂起所在线程的作用,而在这个时候CPU会执行其他的动作的.根本不会消耗多少CPU资源.说不定你会觉得其他的程序运行得更快乐,呵呵.
      

  10.   

    用sleep(x) 并不会占用cpu的,
      

  11.   

    如果程序是单线程sleep()就使得该程序完全停止执行!
    不能起到延时的作用。还是用SetTimer()好点。
      

  12.   

    看看操作系统内核调度篇,就会知道Sleep延时是最好的
    通过SetTimer来定时机制来延时,一是不方便(异步),二是线程仍旧在运行,占用资源想不明白为什么不用Sleep