C++で処理を一定時間停止する場合は、sleepやsleep_for(C++11以降)を使用します。
sleep関数
<unistd.h>ライブラリのsleep関数を使って処理を一時停止します。
#include <unistd.h>
sleep(5); // 5秒処理を止める
1秒単位で処理を止める事ができます。
1秒未満の単位(ミリ秒等)で処理を止めたい場合は、下のsleep_for関数を使いましょう。
sleep_for関数
指定した時間だけ現在のスレッドをブロックします。
#include <thread>
#inclued <chrono>
std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 100ミリ秒処理を止める
停止する時間はミリ秒だけでなく秒や分、ナノ秒等も指定できます。
std::this_thread::sleep_for(std::chrono::nanoseconds(100)); // 100ナノ秒
std::this_thread::sleep_for(std::chrono::microseconds(100)); // 100マイクロ秒
std::this_thread::sleep_for(std::chrono::milliseconds(100)); // 100ミリ秒
std::this_thread::sleep_for(std::chrono::seconds(10)); // 10秒
std::this_thread::sleep_for(std::chrono::minutes(5)); // 5分
std::this_thread::sleep_for(std::chrono::hours(1)); // 1時間
1時間単位で処理を停止する事はあまりないと思いますが、ミリ秒や秒単位での停止は頻繁に使用すると思います。
以下にサンプルコードを記載します。
1+2の結果をiに代入する処理を10ミリ秒おきに実行する処理です。
#include <thread>
#inclued <chrono>
int main()
{
// 何かの処理
while(true) {
// 繰返し行う処理
int i = 1 + 2;
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
}