私はリアルタイムプログラミング/マルチスレッドにかなり慣れていないので、実用的な開発を自分のベルトの下で行おうとしています。画像処理(openCV)、Webページの提供(libmicrohttpdなどのライブラリを使用)、周辺機器とのインターフェースなど、いくつかのタスクを実行する学校プロジェクト用のプログラム(C)をコーディングしようとしています。このプログラムは、各タスクが基本的に独立して実行されるように、かなりスレッド化されます。
このプログラムの非常に中心的な部分は、イベント/データのロギングと周辺機器の時計の設定です。これには、コンピューターのオンボード時間が必要です。つまり、複数のスレッドがそのタスクの一部として現在の時刻を必要とします。だから私の質問は、グローバル時間構造体を宣言し、個々のスレッドで必要に応じてgettimeを呼び出すのが良いのか、それとも常に現在の時刻を維持する別のスレッドを持ち、すべてのスレッドがそれを読み取るのが良いのかということです。前者はアクセスの問題があるように聞こえますが、2番目は適切な頻度で更新するのが難しいようです。
私が行っているタスクのより詳細なアイデアを与えるために:
- opencvが特定のオブジェクトを検出するたびに、時間を含む画像とテキストログを保存しています
- 周辺機器から受信した最後の10パケットの時間を記録しています(これは非常に低いデータレートの接続です)
- 周辺機器にはオンボードRTCがないため、このプログラムは、接続するか、離れすぎたときにRTCを設定します。
アドバイスありがとうございます。