我已經使用SDL完成了一個非常基本的窗口,並希望保持它運行,直到我按下窗口上的X.如何在運行SDL程序時保持CPU使用率降低?
#include "SDL.h"
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, char **argv)
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Surface* screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 0,
SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("SDL Test", 0);
SDL_Event event;
bool quit = false;
while (quit != false)
{
if (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
quit = true;
}
}
SDL_Delay(80);
}
SDL_Quit();
return 0;
}
我試圖在同時子句的末尾添加SDL_Delay()
和它的工作非常好。
但是,80 ms似乎是我可以用來保持程序平穩運行的最高值,即使此時CPU使用率大約爲15-20%。
這是做到這一點的最佳方式,我必須忍受它已經在這一點上吃了這麼多的CPU的事實嗎?
SDL中只使用一個線程是否正常?你有['SDL_PushEvent'](http://www.libsdl.org/cgi/docwiki.cgi/SDL_PushEvent)和['SDL_AddTimer'](http://www.libsdl.org/cgi/docwiki.cgi/SDL_AddTimer ),那麼爲什麼不去多線程? – dyp
使用10 ms可使CPU使用率接近60%。我很好奇GTK如何管理它,因爲創建類似的虛擬窗口並不會影響CPU使用率。 – budwiser
@DyP即使程序沒有線程化,操作系統也是如此。操作系統負責測量CPU使用率,因此報告的數據會高於其他數據。 – PearsonArtPhoto