Windows程序的CPU占用率如何准确地控制?
现有模式只能写成这样
:下面的Sleep(16) 是用来让程序不占用100% , 有更准确的方法吗?
// Main message loop:
for(;;)
{
if( TRUE == PeekMessage( &msg, NULL, 0U, 0U, PM_NOREMOVE ) )
{
if( !GetMessage( &msg, NULL, 0, 0 ) )
break;
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else
{
theGame->Proecess();
if( timeGetTime() - dwStartTime >= 33 )
{
theGame->Render();
RECT rcWind;
GetClientRect( g_hWnd, &rcWind );
RedrawWindow( g_hWnd, &rcWind, NULL, RDW_INVALIDATE );
dwStartTime = timeGetTime();
}
Sleep(16);
}
}
问题点数:100、回复次数:6Top
1 楼coolstarhty(语言多了,编程不好学啊)回复于 2005-01-27 15:08:27 得分 5
据我所知道,好像是不行的,因为CPU执行指令带有一定的随机性。
对系统底层了解不多,帮你顶!Top
2 楼Drong([伤口])回复于 2005-01-27 17:34:24 得分 10
有函数可以获取CPU使用率啊,当超过指定值时就SLEEP,呵呵Top
3 楼chijingde(AD)回复于 2005-01-27 17:36:50 得分 1
占用率……
不知道
关注一下Top
4 楼mydo(侯佩|hopy|ks)回复于 2005-01-27 19:36:17 得分 50
看一下 Win32 核心编程Top
5 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-01-27 21:35:27 得分 12
对于这种死循环,最好开个线程来执行,同时适当的Sleep来释放CPU,都可以降低CPU占用率Top
6 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-01-27 21:36:24 得分 22
可以用PDH(Performance Data Helper)系列函数来获得CPU利用率Top




