我写了一个线程,在线程里面有一个while(1循环)我发现程序一运行,cpu资源占有率太高(98%)计算机速度很慢.
void OnTest()
{
handle thread = createthread();
}
DWORD WINAPI threadfun(LPVOID lparam)
{
while(1)
{
dosomething();
}
}
dosomething是对不断收到的数据进行处理.

解决方案 »

  1.   

    使用事件机制,阻塞空转的线程,如果真有这么多数据需要处理也只能如此了。使用休眠(sleep)虽然可以降低cpu的利用率,但是也降低了系统响应请求的时间,没有效率了
      

  2.   

    同意,要效率用事件;要方便,每轮循环中用一次Sleep(0)
      

  3.   

    通常在开始一个线程循环后是不是都要Sleep()一哈呢?哪怕时间间隔很小,那样你的CPU不会占用很高,偶也遇到过如此问题,
    while(1)
     {
      Sleep(10);
      dosomething();
      }
    楼主不妨这样试试.