C/C++で周期的処理

下記のプログラムはCygwinでコンパイルしています。


1.Cの場合

sleep.c

#include <stdio.h>
#include <unistd.h>

int main(void) {
  int i = 0;
  for (;;) {
    printf("%d\n", i);
    sleep(1);
    i++;
  }
  return 0;
}


$ gcc -std=c11 -O2 -Wall *.c -o sleep.exe
$ ./sleep


2.C++の場合

C++では、C++11以降、sleep_for関数を使って周期的処理を行うことができるようになりました。

sleep.cpp

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

int main() {
  int i = 0;
  for (;;) {
    std::cout<< i << std::endl;
    std::this_thread::sleep_for(std::chrono::milliseconds(1000));
    i++;
  }
  return 0;
}


$ g++ -std=c++11 -O2 -Wall *.cpp -o sleep.exe
$ ./sleep


参考サイト

1.sleep系関数の精度と挙動
2.VC++の sleep_for 関数の実装がよろしくない
3.一定時間処理を停止する

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中