因为我在程序中必须写一个while(true){...}的程序,该程序主要是不停的给各个终端发放信息,每一次时间间隔比较短,50ms左右。
目前直接循环的话,cpu马上就上100了,在vb里可以加入Doevent来改善,不知在vc里该如何写?谢谢各位了!

解决方案 »

  1.   

    新开个线程,让它去while(TRUE)
      

  2.   

    送你个VC版的DoEvents
    void DoEvents()
    {
    MSG msg;
    while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    return;
    }
      

  3.   

    每轮循环中加入_sleep(50) ;
    不过,不把这个循环放入线程的话,在它结束以前,你的程序的界面对任何操作都是无响就的,包括画界面的消息.
      

  4.   

    办法很多了,最简单就是开个线程然后sleep(1)
    复杂的可以用信号量,等待事件等等
      

  5.   

    呵呵,谢谢楼上的哈,看了就明白了,就是自己不会写啊,看来看sdk还是有点帮助的哈
    谢了。现在的结果是在任务管理器里,不会说没响应,但是cpu还是100。
      

  6.   

    我说得楼上是ymbymb(),不好意思,帖子刷的太快,谢谢大家。to  QunKangLi(李群康)因为程序本身的要求就不能_sleep(50)了。to kathywp(树欲静而风不止) 你是说没一次循环就开一个线程然后sleep(1)?
      

  7.   

    CEvent nullEventwhile(1){  WaitSingleObject(nullEvent,50);
    }
    这样好点,不会影响整个系统.
      

  8.   

    你先开一个线程,在线程中while( TRUE ){}中加入Sleep( 10 );这样如果不做其它处理,CPU基本不占!
      

  9.   

    to firebolt2002(霹雳)  我在msdn里面没有找到WaitSingleObject,这也是等待50ms?
      

  10.   

    WaitForSingleObject(...)  // xixi
      

  11.   

    CEvent event;
    …………………………
    WaitForSingleObject(event, 时间);时间可以自己设定。
      

  12.   

    使用CreateThread,建一个线程来处理死循环
      

  13.   

    sleep会使整个程序处于等待状态.WaitForSingleObject只影响当前线程