今天听公司的一个VC老鸟说在线程里做延迟只能用Sleep
不知对不对?反正我认为不对,但又说不出为什么,因为刚接触VC没多长时间

解决方案 »

  1.   

    当然不对
    虽然偶也是新手,但也试过用别的来定时的
    sleep精度太差了
      

  2.   

    Sleep是用来阻塞线程的,在指定世间内线程不会分配到时间片。
    而延时的话,则有好几种方式的。
      

  3.   

    做延时的方式比较多了.
    我觉得比较好的方式是 HANDEL hWait = CreateEvent();
    然后在线程里面去等这个时间
       DWORD dwRet = 
       WaitForSingleOjbect(hWait,nWaitTime);
       if(dwRet == WAIT_OBJECT_0)
       { //等到时间,
       }
    ///
      用EVENT有个好处,可以等多个事件,在需要退出线程的时候,不会造成程序阻塞
      

  4.   

    但是sleep不会占用cpu时间,看你的需要了
      

  5.   

    1、 captainliyun(茄子) 兄的方法2、
    ColeDateTime  start_time  =  ColeDateTime::GetCurrentTime();  
    ColeDateTimeSpan  end_time  =  ColeDateTime::GetCurrentTime()-start_time;  
    While(end_time.GetTotalSeconds()  <=  2)  
    {  
       MSG  msg;  
       GetMessage(&msg,NULL,0,0);  
       PreTranslateMessage(&msg);  
       End_time  =  ColeDateTime::GetCurrentTime-start_time;  
    }
      

  6.   

    Sleep通知系统某个线程在某个时间段内不被调用。它可以使某个线程自愿的放弃剩余的时间片。