1

那么,这两个是一样的吗?在任务管理器中使用延迟 CPU 使用率很疯狂。这与系统空闲进程相同吗?

#include <iostream>
#include <time.h>
//#include <windows.h>

int delay(long int time)
{
    clock_t beginning = clock();
    while(clock() - beginning < time) {}
    return 0;
}

int main()
{
    clock_t beginning = clock();

    begin:

    std::cout << "delay this by 1000ms\n";

    //Sleep(1000);
    delay(1000);

    goto begin; //i know, i know

    return 0;
}
4

1 回答 1

2

这称为“忙等待”,绝对呼叫不同Sleep()。睡眠将重新安排您的进程,以便其他进程有机会运行;忙碌的等待只会让 CPU 忙于无用,并减慢整个系统的速度。

“系统空闲进程”正在做同样的事情,但它只在没有其他进程有工作要做时才被安排。它可能也比您编写的循环更节能。维基百科有关于如何和为什么的有趣细节。

于 2012-11-01T18:32:56.767 回答