0

我使用了一个最小化到托盘 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);
    }
  }

和 checkEyeRestTime 函数:

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

    _endthread();
}

但是这个程序在两核处理器上占用了 50% 的 CPU。如何减少处理器的负载?

4

2 回答 2

2

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

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

于 2012-06-28T18:09:55.023 回答
1

使用计时器事件而不是轮询循环。

于 2012-06-28T12:00:19.507 回答