【C++】一定時間処理を止める方法(sleep, sleep_for)

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));
  }
}

スポンサーリンク

  • この記事を書いた人

まさじぃ

ダメプログラマ歴17年です。 プログラミング関連の事や、 自分で使って良かったもの等の紹介をメインにやっています。

-プログラミング
-