我使用了最小化托盘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。如何减轻处理器的负载?
答案 0 :(得分:2)
或在线程中插入Sleep(0)。这允许其他线程获得一些时间。
如果这没有用,你可以增加睡眠时间。
答案 1 :(得分:1)
使用timer event代替轮询循环。