Freigeben über


steady_clock-Struktur

Stellt eine Uhr dar, die niemals angepasst wird und sich mit einer einheitlichen Rate vorwärts bewegt.

Syntax

struct steady_clock;

Hinweise

A steady_clock ist eine monotonische Uhr, was bedeutet, dass die Zeit, die er meldet, nur vorwärts bewegt. Der von einem Aufruf now zurückgegebene Wert ist immer kleiner oder gleich dem Wert, der vom nächsten Aufruf nowzurückgegeben wird.

Eine steady_clock stellt sicher, dass die Zeit zwischen Dencken konstant ist und es besser ist, Intervalle zu messen als eine Systemuhr zu verwenden. Die Systemuhr bietet Wanduhrzeit. Das Problem bei der Verwendung der Wanduhrzeit zum Messen der verstrichenen Zeit besteht darin, dass die Wanduhrzeit während der Messung eines Zeitintervalls geändert werden kann. Es könnte durch Synchronisierung mit einer anderen Uhr über das Netzwerk, durch einen Übergang zur Sommerzeit usw. geändert werden. A steady_clock unterliegt diesen Anpassungen nicht, sodass sie die bevorzugte Möglichkeit ist, die verstrichene Zeit nachzuverfolgen.

high_resolution_clock ist ein typedef für steady_clock. Unter Windows steady_clock wird die QueryPerformanceCounter Funktion umbrochen.

Beispiel

#include <chrono> 
#include <thread>
#include <iostream>

using namespace std::chrono;

int main()
{
    auto begin = steady_clock::now();
    std::this_thread::sleep_for(std::chrono::seconds(1));
    auto end = steady_clock::now();
    
    std::cout << "Elapsed seconds:      "
        << duration_cast<seconds>(end - begin).count()
        << "s\n";

    std::cout << "Elapsed milliseconds: "
        << duration_cast<milliseconds>(end - begin).count()
        << "ms\n";

    std::cout << "Elapsed microseconds: "
        << duration_cast<microseconds>(end - begin).count()
        << "us\n";

    std::cout << "Elapsed nanoseconds:  "
        << duration_cast<nanoseconds>(end - begin).count()
        << " ns\n";

    return 0;
}
Elapsed seconds:      1s
Elapsed milliseconds: 1007ms
Elapsed microseconds: 1007266us
Elapsed nanoseconds:  1007266700 ns

Komforttypaliasen

Name Beschreibung
steady_clock::duration In der Implementierung von Microsoft ist es ein Synonym für nanoseconds, das als duration<long long, nano>definiert ist. Es stellt eine Dauer der Zeit dar, die in Milliarden einer Sekunde gemessen wird.
steady_clock::period In der Implementierung von Microsoft ist es ein Synonym für nano, das als std::ratio<1i64, 1000000000i64> definiert ist. Sie stellt die Zeit in Sekunden (ein Milliardenstel Sekunde) zwischen jedem Teilstrich in der Dauer dar.
steady_clock::rep Ein Synonym für long long, das der Typ in der Microsoft-Implementierung verwendet wird, um die Anzahl der Taktstriche in einer steady_clock::duration
steady_clock::time_point Ein Synonym für time_point<steady_clock>. Wird verwendet, um eine time_point für diese Uhr darzustellen.

Öffentliche Funktionen

Funktion Beschreibung
now Gibt die aktuelle Uhrzeit aus dem steady_clock Wert zurück time_point .

Öffentliche Konstanten

Name Beschreibung
steady_clock::is_steady Ist true. Eine steady_clock ist gleichmäßig. Das bedeutet, dass Sie diese Uhr verwenden können, um die Zeit vor einem Ereignis, die Zeit nach einem Ereignis abzurufen, und sie zuverlässig subtrahieren, um die Dauer des Ereignisses zu erhalten, da die Uhr während dieser Zeit nicht angepasst wird.

Anforderungen

Header: <chrono>

Namespace:std::chrono

Siehe auch

<chrono>
file_clock class
high_resolution_clock
local_t-Struktur
system_clock-Struktur
tai_clock-Klasse
utc_clock-Klasse
Headerdateienreferenz