Partilhar via


steady_clock estrutura

Representa um relógio que nunca é ajustado e que avança a um ritmo uniforme.

Sintaxe

struct steady_clock;

Observações

A steady_clock é um relógio monotônico, o que significa que o tempo que ele relata só avança. O valor retornado por uma chamada para now é sempre menor ou igual ao valor retornado pela próxima chamada para now.

A steady_clock garante que o tempo entre ticks é constante, tornando-o melhor para medir intervalos do que usar um relógio do sistema. O relógio do sistema fornece o tempo do relógio de parede. O problema com o uso do tempo do relógio de parede para medir o tempo decorrido é que o tempo do relógio de parede pode ser modificado durante a medição de um intervalo de tempo. Ele poderia ser modificado sincronizando com outro relógio pela rede, por uma transição para o horário de verão, e assim por diante. A steady_clock não está sujeito a esses ajustes, tornando-se a maneira preferida de acompanhar o tempo decorrido.

high_resolution_clock é um typedef para steady_clock. No Windows, steady_clock encapsula a QueryPerformanceCounter função.

Exemplo

#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

Aliases de tipo de conveniência

Nome Descrição
steady_clock::duration Na implementação da Microsoft, é um sinônimo de nanoseconds, que é definido como duration<long long, nano>. Representa uma duração de tempo medida em bilionésimos de segundo.
steady_clock::period Na implementação da Microsoft, é um sinônimo de nano, que é definido como std::ratio<1i64, 1000000000i64> . Representa o tempo em segundos (um bilionésimo de segundo) entre cada tick na duração.
steady_clock::rep Um sinônimo de long long, que é o tipo usado na implementação da Microsoft para representar o número de ticks de relógio em um steady_clock::duration
steady_clock::time_point Sinónimo de time_point<steady_clock>. Usado para representar um time_point para este relógio.

Funções públicas

Função Descrição
now Retorna a hora atual do steady_clock como um time_point valor.

Constantes públicas

Nome Descrição
steady_clock::is_steady Detém true. A steady_clock está estável. Isso significa que você pode usar esse relógio para obter o tempo antes de um evento, o tempo depois de um evento e subtraí-los de forma confiável para obter a duração do evento, porque o relógio não será ajustado durante esse tempo.

Requerimentos

Cabeçalho:<chrono>

Espaço de nomes:std::chrono

Ver também

<chrono>
file_clock class
high_resolution_clock
local_t estruturar
system_clock estruturar
Classe tai_clock
Classe utc_clock
de referência de arquivos de cabeçalho