简单的程序使用太多的CPU

时间:2016-10-30 16:16:00

标签: c ubuntu load cpu

编辑:为什么这个问题会被忽视?

我想知道为什么下面的代码使用了很多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。有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

没有什么可以减慢第二次循环(如睡眠或IO操作),因此它的运行速度与操作系统和处理器执行速度一样快。

答案 1 :(得分:1)

坐在公交车站,等待公共汽车在一小时左右到达,你不会每秒钟看你的手表,毫秒,......,不是吗?但这正是你告诉CPU做的事情,甚至值得你告诉它&#34;查找时间&#34;尽可能快地,尽可能快。

因此,根据所需的准确性,告诉CPU在检查时间之间花费更长或更短的时间。

如果精度为1秒就足够了,那么在测试时间之间等待1秒

      sleep(1);

进入内部while - 循环。

答案 2 :(得分:0)

通过放while(1),你说'为无限运行循环'。这意味着你的循环将继续一遍又一遍地执行相同的过程。没有其他条件语句告诉它什么时候停止,所以在编译时,它会识别这个,当你运行它时,计算机将永远运行程序。加班,这将占用大量的CPU资源,这是你注意到吸收CPU的原因。