C++ の chrono の色々な時間表記の仕方2020年09月24日 12時29分09秒

C++ の this_thread を一秒停止の例を上げた。これを少し変更して、スリープの時間を加減する。

まずは、前回と同じ秒で明記する方法。

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

int main()
{   
    std::cout << "SLEEPING" << std::endl;

    std::this_thread::sleep_for( std::chrono::seconds( 1 ) ); // 1 sec

    std::cout << "WOKE UP" << std::endl;
}
同じようにミリ秒などで指定することも出来る。
#include <chrono>
#include <thread>
#include <iostream>

int main()
{   
    std::cout << "SLEEPING" << std::endl;

    std::this_thread::sleep_for( std::chrono::milliseconds( 300 ) ); // 0.3 sec

    std::cout << "WOKE UP" << std::endl;
}
また duration を用いて、間隔を使った指定方法もある。
#include <chrono>
#include <thread>
#include <iostream>

int main()
{   
    std::cout << "SLEEPING" << std::endl;

    std::this_thread::sleep_for(
        std::chrono::duration< int, std::milli >( 400 ) ); // 0.4 sec

    std::cout << "WOKE UP" << std::endl;
}
chrono は内部的には比率を用いいて時間を保持しているらしく、その形式で指定する事もできる。しかし、可読性が一気に落ちる。
#include <chrono>
#include <ratio>
#include <thread>
#include <iostream>

int main()
{   
    std::cout << "SLEEPING" << std::endl;

    std::this_thread::sleep_for(
        std::chrono::duration< int, std::ratio< 1, 10 > >( 5 ) ); //
 0.5 sec

    std::cout << "WOKE UP" << std::endl;
}
どのコードも単体で動き、所定の時間だけスリープする。

前回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2020/09/24/9298809/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。