複数の小さなファイルを読み込んで、それらを 5 秒の長さの 1 つのファイルに出力しています。入力ファイルがいつ入ってくるか、それらの大きさ、それぞれに含まれる時間の長さなどを制御できません。5秒間隔で生成されたすべてのファイルのすべてのデータを含む完全なファイルを5秒ごとに出力したいと思います。これを準ストリーミングの方法で動作させ、ファイルをバッファリングせず、5 秒後に出力を作成するようにしたいと考えています。
このような状況では、入力ファイルが存在しない場合に、新しい値のポールにスリープおよびウェイクアップして対処する必要があります。ただし、5 秒のマークに達したときにスリープ/ポーリングも停止する必要があるため、新しい 5 秒のブロックを出力します。これは、5 秒が経過して結果を出力する準備ができているかどうかを知るために、時計との比較を行う必要があることを意味します。
これらの壁時計チェックのそれぞれが、それに伴うすべての費用を伴う OS へのシステム コールになるかどうか疑問に思っています。可能であれば、あまり労力をかけずに、ウォール クロックを取得するための CPU 呼び出しを最小限に抑えたいと思います (主に CPU を節約するために、非常に迅速なポーリングを行います。数十のアプリケーションのそれぞれに対する一定の CPU 呼び出しは、実際には一部を消費する可能性があります)。 CPU)。私が好むのは、CPUサイクルから離れて動作し、内部タイマーの再同期のために時々OSを呼び出すだけのシステムです。さて、このプログラムでは、わざわざ複雑なことを実装する価値はありませんが、不思議に思いました。C++ 言語には、私が説明したこと、CPU 時間の操作、ウォール クロックとの断続的な同期を行うメソッドが既に作成されていますか? それとも、時間を取得しようとするたびに常にシステム コールを実行しますか?
ありがとう