我试图通过在VS中编写简单的东西来熟悉C time.h库。以下代码只是每两秒打印一次x添加到自身的值:
case 1 in
1) # entered, because it matches and is the first condition
echo 'one'
;;& # continue evaluation branch conditions
2) # not entered, because its condition doesn't match
echo 'two'
;;
*) # entered, because it's the next *matching* condition
echo 'any'
;; # using a terminator is optional in the * branch
esac
我关注的是该程序占用的CPU数量,大约22%。我认为这个问题源于clockTemp的不断更新(正好在int main() {
time_t start = time(NULL);
time_t clock = time(NULL);
time_t clockTemp = time(NULL); //temporary clock
int x = 1;
//program will continue for a minute (60 sec)
while (clock <= start + 58) {
clockTemp = time(NULL);
if (clockTemp >= clock + 2) { //if 2 seconds has passed
clock = clockTemp;
x = ADD(x);
printf("%d at %d\n", x, timeDiff(start, clock));
}
}
}
int timeDiff(int start, int at) {
return at - start;
}
语句之下),但我不知道如何解决这个问题。这可能是视觉工作室问题,还是有特殊方法来检查时间?
代码需要睡眠功能,因此不需要经常运行。
我添加了while
的睡眠,并将#include <windows.h>
放在Sleep (2000) //2 second sleep
while
答案 0 :(得分:2)
问题不在于您检查当前时间的方式。问题是没有什么可以限制循环运行的频率。您的程序会尽快执行语句,并占用大量处理器时间。 (如果没有其他程序,在单线程CPU上,它将使用100%的处理器时间。)
您需要在循环中添加“sleep”方法,这将向处理器表明它可以在短时间内停止处理您的程序。有很多方法可以做到这一点; this question有一些例子。