タグ

2008年1月25日のブックマーク (2件)

  • Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー

    UNIX でプロセスを一時的にスリープさせるには sleep(3) が使えます。sleep() は引数に秒単位でしか時間を指定できないので、より短い時間を指定したい場合は usleep(3) (マイクロ秒) や nanosleep(2) (ナノ秒) を使うことになります。sleep(), usleep() はライブラリ関数、nanosleep() はシステムコール*1です。 この usleep() や nanosleep() で 1ms 程度の短い時間プロセスを停止したとして、正確にその時間だけ停止させることはできるでしょうか。http://shiroikumo.at.infoseek.co.jp/linux/time/ にあるコードを参考に、実際に動かしてみます。カーネル 2.6.19 x86_64、CentOS 5 で試します。 まず、nanosleep() で 1ms のスリープを行

    Linux のスリープ処理、タイマ処理の詳細を見る - naoyaのはてなダイアリー
    ALPHA
    ALPHA 2008/01/25
     タイマの精度
  • 14.318180MHz - firewood's diary

    Linux のスリープ処理、タイマ処理の詳細を見る これに触発されてWindowsだとどんなもんなのか、自分の記憶があやふやだったので確認してみた。 処理1(低精度) DWORD Timestamp[256]; int i; for ( i = 0; i < 256; ++i ) { Timestamp[i] = ::timeGetTime(); // ここに処理を入れる Sleep(1); } これの結果は 15, 31, 47, 62, 78, 93 という感じになる。 OSや機種など環境に依存するが、XPだと15msのことが多いようだ。 単に待てばいい処理ならこれでOK。 処理2(精度向上) timeBeginPeriod( 1 ); Sleep( 1000 ); // 精度向上が反映されるのを待つ DWORD Timestamp[256]; int i; for ( i = 0;

    14.318180MHz - firewood's diary
    ALPHA
    ALPHA 2008/01/25
     タイマの精度