c cpu 中的 time.h 库是否密集?

Is the time.h library in c cpu intensive?

我用 c 编写了这个简短的程序,但每当我 运行 它时,我的电脑的风扇开始旋转得非常快。我是以错误的方式做某事还是时间库只是 cpu 以某种方式密集?这是代码:

#include <stdio.h>
#include <time.h>

void delay(int seconds){
    int clocks_to_wait = seconds * CLOCKS_PER_SEC;
    clock_t time = clock();
    while(clock() < time + clocks_to_wait){
        
    }

}


int main(){
    while(1){
        printf("\r");
        printf("-");
        delay(1);
        printf("\r");
        printf("\");
        delay(1);
        printf("\r");
        printf("|");
        delay(1);
        printf("\r");
        printf("/");
        delay(1);
        printf("\r");
        printf("-");
        delay(1);
    }
    return 0;
}

我猜是空的 while 循环让处理器变热了吗?我说的对吗?

编辑:问题已解决,来源:

是的,像这样一个空的 while 循环只会用掉 100% 的 CPU 时间——忙等待直到时间赶上你想要等待的时间。

如果你想等待而不燃烧CPU时间(浪费电池加热东西和运行风扇),你需要使用OS 不使用 CPU 等待的延迟。在 Posix(Linux、OSX、UNIX 等)系统上,即休眠指定秒数的 sleep,或 nanosleep 休眠 timespec 的调用,指定以纳秒为单位的延迟。

在您的情况下,只需将 delay(1); 调用替换为 sleep(1);