我尝试使用ncurses库和C编写一个CUI Snake游戏。一切正常,但是当我运行该程序时,CPU使用率达到50%(最初为8或更低)
在评论出代码的各个部分之后,我确定了我使用的时间延迟函数的主要元凶,这确保了每90ms绘制一个新帧。 (我从网站上获得了该函数的来源)
void waitFrom(clock_t init, long pauseclocks)
{
while((clock() - init) < pauseclocks);
}
并在主要功能中:
clock_t start;
long pause = 90 * (CLOCKS_PER_SEC/1000);
while(1)
{
start = clock();
//game code
waitFrom(start, pause);
}
答案 0 :(得分:2)
延迟会消耗100%的单核 - 可能是你有一个双核处理器?
将延迟替换为:
usleep( 90000 ) ; // 90ms
usleep()
需要#include <unistd.h>
。
这将暂停线程 90ms,而不是忙等待。