Condividi tramite


Struct steady_clock

Rappresenta un orologio che non viene mai regolato e che si sposta in avanti a una velocità uniforme.

Sintassi

struct steady_clock;

Osservazioni:

Un steady_clock è un orologio monotonico, il che significa che l'ora in cui segnala si sposta solo in avanti. Il valore restituito da una chiamata a now è sempre minore o uguale al valore restituito dalla chiamata successiva a now.

Un steady_clock garantisce che il tempo tra i tick sia costante, rendendolo migliore per misurare gli intervalli rispetto all'uso di un orologio di sistema. L'orologio di sistema fornisce l'ora in tempo reale. Il problema relativo all'uso del tempo di clock a parete per misurare il tempo trascorso è che l'ora del tempo a muro può essere modificata durante la misurazione di un intervallo di tempo. Può essere modificato sincronizzando con un altro orologio in rete, da una transizione all'ora legale e così via. Un steady_clock non è soggetto a queste modifiche, rendendo il modo preferito per tenere traccia del tempo trascorso.

high_resolution_clock è un typedef per steady_clock. In Windows esegue steady_clock il wrapping della QueryPerformanceCounter funzione.

Esempio

#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

Alias del tipo di praticità

Nome Descrizione
steady_clock::duration Nell'implementazione di Microsoft è un sinonimo di nanoseconds, definito come duration<long long, nano>. Rappresenta una durata del tempo misurata in miliardi di secondi.
steady_clock::period Nell'implementazione di Microsoft è un sinonimo di nano, definito come std::ratio<1i64, 1000000000i64> . Rappresenta il tempo in secondi (un miliardesimo di secondo) tra ogni tick nella durata.
steady_clock::rep Sinonimo di long long, che è il tipo usato nell'implementazione di Microsoft per rappresentare il numero di tick di clock in un steady_clock::duration
steady_clock::time_point Sinonimo di time_point<steady_clock>. Utilizzato per rappresentare un oggetto time_point per questo orologio.

Funzioni pubbliche

Funzione Descrizione
now Restituisce l'ora corrente da steady_clock come time_point valore.

Costanti pubbliche

Nome Descrizione
steady_clock::is_steady Contiene true. Un oggetto steady_clock è costante. Ciò significa che è possibile usare questo orologio per ottenere l'ora prima di un evento, l'ora dopo un evento e sottrarrli in modo affidabile per ottenere la durata dell'evento perché l'orologio non verrà regolato durante tale tempo.

Requisiti

Intestazione: <chrono>

Spazio dei nomi: std::chrono

Vedi anche

<chrono>
file_clock class
high_resolution_clock
local_t Struct
system_clock Struct
Classe tai_clock
Classe utc_clock
Riferimento file di intestazione