C++ プログラムに時間指定の遅延を追加しようとしているのですが、試すべきことや参照すべき情報について何かアドバイスはありますか?
この時間遅延をどのように実装しているかについて、より詳しい情報があればいいのですが、時間遅延を追加する方法についての詳しい情報が得られるまで、これをどのように実装しようとすればよいのかさえわかりません。
ベストアンサー1
C++11 の更新された回答:
sleep_for
および関数を使用しますsleep_until
。
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread; // sleep_for, sleep_until
using namespace std::chrono; // nanoseconds, system_clock, seconds
sleep_for(nanoseconds(10));
sleep_until(system_clock::now() + seconds(1));
}
sleep
これらの関数を使用すると、、、など、より良い解像度のために新しい関数を継続的に追加する必要がなくなります。およびは、時間、秒、フェムト秒などの型を介して任意の解像度の値を受け入れることができるテンプレート関数ですusleep
。nanosleep
sleep_for
sleep_until
chrono
C++14 では、リテラル サフィックス fornanoseconds
と を使用することでコードをさらに簡素化できますseconds
。
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread; // sleep_for, sleep_until
using namespace std::chrono_literals; // ns, us, ms, s, h, etc.
using std::chrono::system_clock;
sleep_for(10ns);
sleep_until(system_clock::now() + 1s);
}
スリープの実際の期間は実装によって異なることに注意してください。10 ナノ秒のスリープを要求できますが、実装では、それが最短時間である場合、代わりに 1 ミリ秒のスリープになる可能性があります。