ホームページ >バックエンド開発 >C++ >外部ライブラリを使用せずに Linux 上の C でミリ秒単位の正確なタイミングを実現するにはどうすればよいですか?

外部ライブラリを使用せずに Linux 上の C でミリ秒単位の正確なタイミングを実現するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-15 17:47:03842ブラウズ

How to Achieve Milliseconds-Precise Timing in C   on Linux Without External Libraries?

Linux 上の C でのミリ秒精度のタイミング

当初の質問は、クロック() が Windows では時間をミリ秒単位で返すのに、Linux では秒単位で返す理由についてでした。 、質問者は、Boost や Qt などのサードパーティ ライブラリに依存せずにミリ秒レベルの時間精度を取得するための解決策を求めています。

gettimeofday() を使用した解決策

解決策標準 C ライブラリに存在する gettimeofday() 関数を活用することにあります。実装方法は次のとおりです:

  1. 必要なヘッダーを含めます:

    #include <sys/time.h>
    #include <stdio.h>
    #include <unistd.h>
  2. 秒とマイクロ秒を保存する構造体 timeval を定義します:

    struct timeval start, end;
  3. 開始時刻を取得します:

    gettimeofday(&start, NULL);
  4. usleep() を使用して遅延をマイクロ秒単位で指定します (目的の遅延に置き換えます):

    usleep(2000);
  5. 終了時刻を取得します:

    gettimeofday(&end, NULL);
  6. 経過時間を計算します:

    long mtime, seconds, useconds;    
    
    seconds  = end.tv_sec  - start.tv_sec;
    useconds = end.tv_usec - start.tv_usec;
    
    mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;
  7. 経過時間をミリ秒単位で出力します:

    printf("Elapsed time: %ld milliseconds\n", mtime);

このコード スニペットは gettimeofday() を利用してマイクロ秒単位の時間を取得し、ミリ秒レベルの精度を保証します。これは、Linux 上の C で正確な時間測定値を取得するための堅牢な標準ソリューションとして機能します。

以上が外部ライブラリを使用せずに Linux 上の C でミリ秒単位の正確なタイミングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。