Visual c++ 防止Windows线程(_beginThread)占用太多CPU?
我使用其中一个VC++示例创建了一个程序,该程序会每隔一段时间弹出一条消息,提醒我休息一下 程序如下所示: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
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)代码>