C时间延迟占用CPU

时间:2014-05-03 21:43:33

标签: c time delay cpu

我尝试使用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);
}

1 个答案:

答案 0 :(得分:2)

延迟会消耗100%的单核 - 可能是你有一个双核处理器?

将延迟替换为:

usleep( 90000 ) ;  // 90ms

usleep()需要#include <unistd.h>

这将暂停线程 90ms,而不是忙等待