那么,这两个是一样的吗? 在任务管理器中使用延迟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;
}
答案 0 :(得分:2)
这称为“忙碌等待”,并且绝对不与调用Sleep()
相同。睡觉会计划你的过程,以便其他过程有机会运行;忙碌的等待只会让CPU忙于无所事事,并减慢整个系统的速度。
“系统空闲进程”正在执行相同的操作,但只有在没有其他进程可以执行时才会进行调度。它可能比您编写的循环更节能。维基百科有interesting details关于如何以及为何的原因。