1

では、この2つは同じですか?遅延 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 をビジー状態に保ち、何の役にも立たず、システム全体の速度を低下させます。

「System Idle Process」も同じことを行っていますが、他のプロセスが実行する作業がない場合にのみスケジュールされます。おそらく、あなたが書いたループよりも電力効率が良いでしょう。ウィキペディアには、その方法と理由に関する興味深い詳細があります。

于 2012-11-01T18:32:56.767 に答える