1. ホーム
  2. c++

[解決済み] C++ クロスプラットフォーム高分解能タイマ

2023-06-24 23:58:09

質問

C++で簡単なタイマー機構を実装したいと思っています。コードは、WindowsとLinuxで動作する必要があります。解像度はできるだけ正確であるべきです(少なくともミリ秒の精度)。これは、単に時間の経過を追跡するために使用され、いかなる種類のイベント駆動設計を実装するためではありません。これを達成するための最良のツールは何でしょうか?

どのように解決するのですか?

C++03の場合 :

ブースト.タイマ は動作するかもしれませんが、C 関数の clock に依存しているので、十分な解像度が得られないかもしれません。

Boost.Date_Timeには ptime クラス は、以前Stack Overflowで推奨されていたものです。 のドキュメントを参照してください。 microsec_clock::local_timemicrosec_clock::universal_time しかし、quot;Win32システムはこのAPIでマイクロ秒の分解能を達成できないことが多いという注意書きに注意してください。

STLsoft STLsoft は、OS 固有の API に対する薄いクロスプラットフォーム (Windows と Linux/Unix) の C++ ラッパーなどを提供しています。 その パフォーマンスライブラリ には、あなたが必要とすることを実現するいくつかのクラスがあります。 (クロスプラットフォームにするためには、以下のようなクラスを選びます。 performance_counter の両方に存在する winstlunixstl の名前空間のどちらかを使用し、プラットフォームに合わせてください)。

C++11以上の場合 :

を使用します。 std::chrono ライブラリはこの機能を内蔵しています。 参照 この回答 by @HowardHinnant を参照してください。