Visual c++ 防止Windows线程(_beginThread)占用太多CPU?

Visual c++ 防止Windows线程(_beginThread)占用太多CPU?,visual-c++,cpu-usage,Visual C++,Cpu Usage,我使用其中一个VC++示例创建了一个程序,该程序会每隔一段时间弹出一条消息,提醒我休息一下 程序如下所示: startTime = time(0); g_hInstance=hInstance; HWND hWnd=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc); if(hWnd) { MSG msg; _beginthread(&checkEyeRestTim

我使用其中一个VC++示例创建了一个程序,该程序会每隔一段时间弹出一条消息,提醒我休息一下

程序如下所示:

  startTime = time(0);
  g_hInstance=hInstance;

  HWND hWnd=CreateDialog(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
  if(hWnd)
  {
    MSG msg;
    _beginthread(&checkEyeRestTime, 0, 0);  
    while(GetMessage(&msg,hWnd,0,0))
    {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
  }
以及CheckeyRestTime函数:

void checkEyeRestTime(void* ptr)
{
    while( true )
    {
     //logic to check time and display message
    }//while

    _endthread();
}
但是这个程序在一个双核处理器上占用了50%的CPU。如何减少处理器上的负载?

使用a而不是轮询循环。

使用a而不是轮询循环。

或在线程中插入睡眠(0)。这允许其他线程获得一些时间

如果这没有帮助,您可以增加睡眠时间。

或在线程中插入睡眠(0)。这允许其他线程获得一些时间


如果这没有帮助,你可以增加睡眠时间。

谢谢。这是我正在考虑的,但我想知道如何防止一个简单的while循环占用这么多CPU。显然,计时器也在内部轮询。他们是怎么做到的?我想我会搜索一些事件处理程序的源代码。谢谢。这是我正在考虑的,但我想知道如何防止一个简单的while循环占用这么多CPU。显然,计时器也在内部轮询。他们是怎么做到的?我想我会搜索一些事件处理程序的源代码。我最终使用了
Sleep(numberOfSeconds*1000)我最终使用了
睡眠(numberOfSeconds*1000)