编辑:为什么这个问题会被忽视?
我想知道为什么下面的代码使用了很多CPU。我看不到任何可能导致这个问题的事情。 它是以下代码。
#include <stdio.h>
#include <time.h>
void main(){
clock_t begin;
double time_spent;
int i = 0;
while(1){
begin = clock();
time_spent = 0;
while(time_spent < 60) {
time_spent = (double)(clock() - begin) / CLOCKS_PER_SEC;
}
i++;
printf("Eine Minute vergangen %i\n", i);
}
}
这个程序基本上会检查一分钟过去的时间,计算完成了多少分钟并打印出来。
我在ubuntu终端上运行它,它吸收了我的CPU。有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
没有什么可以减慢第二次循环(如睡眠或IO操作),因此它的运行速度与操作系统和处理器执行速度一样快。
答案 1 :(得分:1)
坐在公交车站,等待公共汽车在一小时左右到达,你不会每秒钟看你的手表,毫秒,......,不是吗?但这正是你告诉CPU做的事情,甚至值得你告诉它&#34;查找时间&#34;尽可能快地,尽可能快。
因此,根据所需的准确性,告诉CPU在检查时间之间花费更长或更短的时间。
如果精度为1秒就足够了,那么在测试时间之间等待1秒
sleep(1);
进入内部while
- 循环。
答案 2 :(得分:0)
通过放while(1)
,你说'为无限运行循环'。这意味着你的循环将继续一遍又一遍地执行相同的过程。没有其他条件语句告诉它什么时候停止,所以在编译时,它会识别这个,当你运行它时,计算机将永远运行程序。加班,这将占用大量的CPU资源,这是你注意到吸收CPU的原因。